Compare commits
	
		
			43 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					e50d51ed9f | ||
| 
						 | 
					97a254f599 | ||
| 
						 | 
					1d20aa10e6 | ||
| 
						 | 
					e92e81d9fe | ||
| 
						 | 
					bed1a45192 | ||
| 
						 | 
					34d9dbf1e3 | ||
| 
						 | 
					0287aa6588 | ||
| 
						 | 
					1732c70fb5 | ||
| 
						 | 
					263dde90c2 | ||
| 
						 | 
					422795e2ce | ||
| 
						 | 
					00ad99a292 | ||
| 
						 | 
					f026c2c541 | ||
| 
						 | 
					4d20309ffe | ||
| 
						 | 
					65439ba023 | ||
| 
						 | 
					86162f3f47 | ||
| 
						 | 
					b98e83ee91 | ||
| 
						 | 
					d59197fafe | ||
| 
						 | 
					b66c86c9ee | ||
| 
						 | 
					f7eb236f6f | ||
| 
						 | 
					1936d73eb1 | ||
| 
						 | 
					58872fc090 | ||
| 
						 | 
					fc35eb90ca | ||
| 
						 | 
					b18be3f970 | ||
| 
						 | 
					027438f775 | ||
| 
						 | 
					93e159ae85 | ||
| 
						 | 
					bcfcf50562 | ||
| 
						 | 
					d0097cc10f | ||
| 
						 | 
					eecf868e3c | ||
| 
						 | 
					a5cd486a7f | ||
| 
						 | 
					6e6b4ac5fa | ||
| 
						 | 
					558ff4d5fb | ||
| 
						 | 
					490f855aef | ||
| 
						 | 
					d1491e201d | ||
| 
						 | 
					3231af9375 | ||
| 
						 | 
					a5758e7aef | ||
| 
						 | 
					61a9393ce1 | ||
| 
						 | 
					161d22cb07 | ||
| 
						 | 
					3a96ca1c96 | ||
| 
						 | 
					934530914b | ||
| 
						 | 
					b717625cd2 | ||
| 
						 | 
					b475396134 | ||
| 
						 | 
					e7b1d898ca | ||
| 
						 | 
					5cd09a6f44 | 
							
								
								
									
										374
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										374
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -1,3 +1,305 @@
 | 
				
			|||||||
 | 
					commit 97a254f599db622d34a0c1bbd3057d1a7050a468
 | 
				
			||||||
 | 
					Author: Doug Freed <dwfreed@mtu.edu>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    start-stop-daemon: properly handle missing pidfile
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    X-Gentoo-Bug: 639218
 | 
				
			||||||
 | 
					    X-Gentoo-Bug-URL: https://bugs.gentoo.org/639218
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 1d20aa10e65c24f5b2d78a1b0a4ab77de5395aab
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit e92e81d9fec6e07d68692e29839b169cbda19505
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit bed1a4519295a86f7cc62a79604d73a8ae726103
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fix FreeBSD build
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    This is for #186.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 34d9dbf1e305cad9ddde094dbc905e9024e94992
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 0287aa65884e30f81a92c58d911048b00c878034
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 1732c70fb5e6d75c0d104662d06169978c00a5e8
 | 
				
			||||||
 | 
					Author: Doug Freed <dwfreed@mtu.edu>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rc-schedules: if given nothing to look for, stop
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    This avoids trying to kill everything.
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    X-Gentoo-Bug: 631958
 | 
				
			||||||
 | 
					    X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=631958
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 263dde90c28ccd5abb1a60b6ba1f5f8be508164a
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 422795e2ceb723601e648f4f5cde55141c7e02f4
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 00ad99a29223e1567752191e748822710e1042e6
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    s6 supervisor fixes
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Add the ability to force-kill a service if it does not go down
 | 
				
			||||||
 | 
					    successfully. Also, adjust the default wait time for an s6 service to go
 | 
				
			||||||
 | 
					    down to 60 seconds.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit f026c2c541f43eadbaed51b93379fdf56e1f1d0a
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 4d20309ffeb5f0211957bbbc5c875dab434b5079
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 65439ba023195786e71316f6638b52603e102f60
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rc_find_pids: namespace fix
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Ignore namespaces if there are errors reading either the pid namespace
 | 
				
			||||||
 | 
					    for the current process or the process we aare testing.
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    This fixes https://github.com/openrc/openrc/issues/180.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 86162f3f47c393fc173de0458eeeb322c0bb61f2
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit b98e83ee9195eb052fafebc440515f0b2d055a91
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit d59197fafef164fe7319f9d87f544a8cc8e25044
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    start-stop-daemon: do not use do_stop to verify whether a daemon is running
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    X-Gentoo-Bug: 636574
 | 
				
			||||||
 | 
					    X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=636574
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit b66c86c9ee6d34d0a9d77140b8e7612709ba19d1
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit f7eb236f6fd8c10af211c6667940e8e1650c12da
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 1936d73eb1aecf31029d53e75e6bb14e307f8e1c
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fix issue with --reexec call
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 58872fc090af5047547bc561a5e58c50be0fc235
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit fc35eb90cab625966ca718a80dd0d38dfffe05b8
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit b18be3f970eba04589977438faaa726b5c3a6cd2
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon: use RC_SVCNAME as the first argument to the daemon
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    This makes ps show which service the supervisor is monitoring.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 027438f7759dbbc19ac1bedeff3f502c891e4d4e
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon: fix logging for reexec and the child command line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 93e159ae8541b82fd5e1843f60dce135e2eb5517
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    log as supervise-daemon not the service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit bcfcf50562a081088248f693dfab62d3eab04efa
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit d0097cc10f8701de1b6a5665c54abf909e897233
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit eecf868e3c4a763b08cd4b3803f4839e8e710413
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon: clarify a log message
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit a5cd486a7fbb5acf8e8f3085500fd86c23dd8641
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 6e6b4ac5fa935eb8052d293f2b8378e0395572e1
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon: log the command line we run to spawn the child process
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 558ff4d5fb90b751ebc2852ea907873af2c236fa
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon: log with the service name instead of "supervise-daemon"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 490f855aef581a720c6c0be0d8407fe6d279f9f5
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    implement "unsupervised" status
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    The unsupervised status is to be used when a supervisor of a supervised
 | 
				
			||||||
 | 
					    service dies but leaves the service daemon itself running.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit d1491e201d3ad364e25a55b29ff8035775a6acac
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon: remove child_pid from saved options during shutdown
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    This allows us to detect when the supervisor dies unexpectedly because
 | 
				
			||||||
 | 
					    in that case child_pid will still exist.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 3231af937590b1c00af1a459009472a371aeb04a
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rc_service_value_set: remove the option if NULL is the value
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    This allows the equivalent of "unsetting" a value for a service.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit a5758e7aeffbeb9766ba3055a3fc347f0ccd3d35
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon.sh: fix status function with no namespaces
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 61a9393ce12fda412bdca4002ac71e7df82384df
 | 
				
			||||||
 | 
					Author: Patrick McLean <chutzpah@gentoo.org>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cgroups_cleanup: clean up shutdown signaling
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    - do not sleep for the full 90 seconds if processes are dead
 | 
				
			||||||
 | 
					    - re-arrange the order of signals we attempt to send to the processes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 161d22cb074ecef7003e19682d72a8ee61c14490
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 3a96ca1c966c3cc44a2e0e51b383ab47d078bcc1
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 934530914bd507476b428d3f6572bbb1c5bbfd16
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    add "unsupervised" status and return code 64 to supervise-daemon status function
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    This is to be used if the service is being supervised and the
 | 
				
			||||||
 | 
					    supervisor is somehow killed.
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Currently, this is very linux specific, but I will expand to other
 | 
				
			||||||
 | 
					    platforms, patches are welcome.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit b717625cd27950c3f00b5345bc1cee9700e79498
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit b47539613431521e5e99bc388e6a9d8eb0e48801
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit e7b1d898ca7896d6443ba1e5167eb6bcf3f92929
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    supervise-daemon: fix build issue for >=glibc-2.26
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    X-Gentoo-Bug: 635334
 | 
				
			||||||
 | 
					    X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=635334
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit 5cd09a6f44aa7d16ab7de1453e37d01448426031
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version 0.34.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					commit f3c70bf5b5aa18e8dc94d4949f05568e0741c5cb
 | 
				
			||||||
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Update ChangeLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
commit f5acc66db7d1a0bfad6a40eefc0240b80f52df94
 | 
					commit f5acc66db7d1a0bfad6a40eefc0240b80f52df94
 | 
				
			||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
					Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			||||||
@@ -1400,75 +1702,3 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    The openntmpfiles package is designed so that it can be used on systems
 | 
					    The openntmpfiles package is designed so that it can be used on systems
 | 
				
			||||||
    independently of whether openrc is used.
 | 
					    independently of whether openrc is used.
 | 
				
			||||||
 | 
					 | 
				
			||||||
commit 6414c3bc394f86a5d6a5f02c934469e21bbbc923
 | 
					 | 
				
			||||||
Author: Jason Zaman <jason@perfinion.com>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    selinux: fix SIGSEGV with invalid contexts
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    Fixes: https://github.com/openrc/openrc/issues/104
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit 4f9bd7e4db185ce6debbebb5242344d8ffadc3ae
 | 
					 | 
				
			||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    init.d/loopback.in: drop the route to the loopback interface on Linux
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    This is related to #103.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit bf539f2196290864ce5c5fd0d679b74ee016e2da
 | 
					 | 
				
			||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    init.d/mount-ro: do not remount /usr read only if it is premounted
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    X-Gentoo-Bug: 573760
 | 
					 | 
				
			||||||
    X-Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=573760
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit 20b60ea904612669dfb744beffcd8e7e447f69ef
 | 
					 | 
				
			||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    conf.d/net-online: clarify comment about interfaces setting
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    This setting refers to all interfaces that support ethernet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit f53c8baef3a6215077c00901759cbbcbe8f10e9b
 | 
					 | 
				
			||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    init.d/net-online: remove interfaces and timeout from local declarations
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    X-Gentoo-Bug:  598621
 | 
					 | 
				
			||||||
    X-Gentoo-Bug-URL:  https://bugs.gentoo.org/show_bug.cgi?id=598621
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit be06cd250e12e63b8eb704bb2508e06fb9791251
 | 
					 | 
				
			||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    src/rc/rc: do not try to start services if fork fails
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit 003657c973ea338a19f2b7294190af9d76cf5cea
 | 
					 | 
				
			||||||
Author: Robin H. Johnson <robbat2@gentoo.org>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    init.d/loopback: drop scope on loopback
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    Busybox does not support the 'scope' argument on 'ip address add' or 'ip
 | 
					 | 
				
			||||||
    route add', this is documented in BUSYBOX.md, but is no longer actually
 | 
					 | 
				
			||||||
    needed, as the kernel does get it right without manual specification,
 | 
					 | 
				
			||||||
    and the ifconfig variant already relies on the kernel to get it right.
 | 
					 | 
				
			||||||
    This is part of #103.
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    X-Gentoo-Bug: 487208
 | 
					 | 
				
			||||||
    X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=487208
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit 4fd144c0a6526963c70f18cb34a65354c2f0a48c
 | 
					 | 
				
			||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    src/rc/rc-misc.c: report error if call to flock() fails
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    X-Gentoo-Bug: 597390
 | 
					 | 
				
			||||||
    X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=597390
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,3 @@
 | 
				
			|||||||
NAME=		openrc
 | 
					NAME=		openrc
 | 
				
			||||||
VERSION=	0.34
 | 
					VERSION=	0.34.11
 | 
				
			||||||
PKG=		${NAME}-${VERSION}
 | 
					PKG=		${NAME}-${VERSION}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -111,9 +111,12 @@ The path to the s6 service directory if you are monitoring this service
 | 
				
			|||||||
with S6. The default is /var/svc.d/${RC_SVCNAME}.
 | 
					with S6. The default is /var/svc.d/${RC_SVCNAME}.
 | 
				
			||||||
.It Ar s6_svwait_options_start
 | 
					.It Ar s6_svwait_options_start
 | 
				
			||||||
The options to pass to s6-svwait when starting the service via s6.
 | 
					The options to pass to s6-svwait when starting the service via s6.
 | 
				
			||||||
 | 
					.It Ar s6_force_kill
 | 
				
			||||||
 | 
					Should we force-kill this service if s6_service_timeout_stop expires
 | 
				
			||||||
 | 
					but the service doesn't go down during shutdown? The default is yes.
 | 
				
			||||||
.It Ar s6_service_timeout_stop
 | 
					.It Ar s6_service_timeout_stop
 | 
				
			||||||
The amount of time, in milliseconds, s6-svc should wait for the service
 | 
					The amount of time, in milliseconds, s6-svc should wait for the service
 | 
				
			||||||
to go down when stopping the service. The default is 10000.
 | 
					to go down when stopping the service. The default is 60000.
 | 
				
			||||||
.It Ar start_stop_daemon_args
 | 
					.It Ar start_stop_daemon_args
 | 
				
			||||||
List of arguments passed to start-stop-daemon when starting the daemon.
 | 
					List of arguments passed to start-stop-daemon when starting the daemon.
 | 
				
			||||||
.It Ar command
 | 
					.It Ar command
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,10 @@ s6_service_path - the path to the s6 service directory. The default is
 | 
				
			|||||||
s6_svwait_options_start - the options to pass to s6-svwait when starting
 | 
					s6_svwait_options_start - the options to pass to s6-svwait when starting
 | 
				
			||||||
the service. If this is not set, s6-svwait will not be called.
 | 
					the service. If this is not set, s6-svwait will not be called.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					s6_force_kill - Should we try to force kill this service if the
 | 
				
			||||||
 | 
					s6_service_timeout_stop timeout expires when shutting down this service?
 | 
				
			||||||
 | 
					The default is yes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
s6_service_timeout_stop - the amount of time, in milliseconds, s6-svc
 | 
					s6_service_timeout_stop - the amount of time, in milliseconds, s6-svc
 | 
				
			||||||
should wait for a service to go down when stopping.
 | 
					should wait for a service to go down when stopping.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -203,15 +203,21 @@ cgroup_cleanup()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	cgroup_running || return 0
 | 
						cgroup_running || return 0
 | 
				
			||||||
	ebegin "starting cgroups cleanup"
 | 
						ebegin "starting cgroups cleanup"
 | 
				
			||||||
	local pids
 | 
						local pids loops=0
 | 
				
			||||||
	pids="$(cgroup_get_pids)"
 | 
						pids="$(cgroup_get_pids)"
 | 
				
			||||||
	if [ -n "${pids}" ]; then
 | 
						if [ -n "${pids}" ]; then
 | 
				
			||||||
		kill -s "${stopsig:-TERM}" ${pids} 2> /dev/null
 | 
					 | 
				
			||||||
		kill -s CONT ${pids} 2> /dev/null
 | 
							kill -s CONT ${pids} 2> /dev/null
 | 
				
			||||||
 | 
							kill -s "${stopsig:-TERM}" ${pids} 2> /dev/null
 | 
				
			||||||
		yesno "${rc_send_sighup:-no}" &&
 | 
							yesno "${rc_send_sighup:-no}" &&
 | 
				
			||||||
			kill -s HUP ${pids} 2> /dev/null
 | 
								kill -s HUP ${pids} 2> /dev/null
 | 
				
			||||||
		sleep "${rc_timeout_stopsec:-90}"
 | 
							kill -s "${stopsig:-TERM}" ${pids} 2> /dev/null
 | 
				
			||||||
		yesno "${rc_send_sigkill:-yes}" &&
 | 
							while [ -n "$(cgroup_get_pids)" ] &&
 | 
				
			||||||
 | 
								[ "${loops}" -lt "${rc_timeout_stopsec:-90}" ]; do
 | 
				
			||||||
 | 
								loops=$((loops+1))
 | 
				
			||||||
 | 
								sleep 1
 | 
				
			||||||
 | 
							done
 | 
				
			||||||
 | 
							pids="$(cgroup_get_pids)"
 | 
				
			||||||
 | 
							[ -n "${pids}" ] && yesno "${rc_send_sigkill:-yes}" &&
 | 
				
			||||||
			kill -s KILL ${pids} 2> /dev/null
 | 
								kill -s KILL ${pids} 2> /dev/null
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
	cgroup2_remove
 | 
						cgroup2_remove
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								sh/s6.sh
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								sh/s6.sh
									
									
									
									
									
								
							@@ -12,6 +12,20 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[ -z "${s6_service_path}" ] && s6_service_path="/var/svc.d/${RC_SVCNAME}"
 | 
					[ -z "${s6_service_path}" ] && s6_service_path="/var/svc.d/${RC_SVCNAME}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_s6_force_kill() {
 | 
				
			||||||
 | 
						local pid
 | 
				
			||||||
 | 
						s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}"
 | 
				
			||||||
 | 
						pid="${3%)}"
 | 
				
			||||||
 | 
						[ -z "${pid}" ] && return 0
 | 
				
			||||||
 | 
						if kill -0 "${pid}" 2> /dev/null; then
 | 
				
			||||||
 | 
							ewarn "Sending DOWN & KILL for ${RC_SVCNAME}"
 | 
				
			||||||
 | 
							s6-svc -dk "${s6_service_link}"
 | 
				
			||||||
 | 
							sleep 1
 | 
				
			||||||
 | 
							kill -0 "${pid}" 2>/dev/null && return 1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
s6_start()
 | 
					s6_start()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if [ ! -d "${s6_service_path}" ]; then
 | 
						if [ ! -d "${s6_service_path}" ]; then
 | 
				
			||||||
@@ -41,7 +55,11 @@ s6_stop()
 | 
				
			|||||||
 fi
 | 
					 fi
 | 
				
			||||||
	s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}"
 | 
						s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}"
 | 
				
			||||||
	ebegin "Stopping ${name:-$RC_SVCNAME}"
 | 
						ebegin "Stopping ${name:-$RC_SVCNAME}"
 | 
				
			||||||
	s6-svc -wD -d -T ${s6_service_timeout_stop:-10000} "${s6_service_link}"
 | 
						s6-svc -d -wD -T ${s6_service_timeout_stop:-60000} "${s6_service_link}"
 | 
				
			||||||
 | 
						set -- $(s6-svstat "${s6_service_link}")
 | 
				
			||||||
 | 
						[ "$1" = "up" ] && 
 | 
				
			||||||
 | 
							yesno "${s6_force_kill:-yes}" &&
 | 
				
			||||||
 | 
								_s6_force_kill "$@"
 | 
				
			||||||
	set -- $(s6-svstat "${s6_service_link}")
 | 
						set -- $(s6-svstat "${s6_service_link}")
 | 
				
			||||||
	[ "$1" = "down" ]
 | 
						[ "$1" = "down" ]
 | 
				
			||||||
	eend $? "Failed to stop ${name:-$RC_SVCNAME}"
 | 
						eend $? "Failed to stop ${name:-$RC_SVCNAME}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ supervise_start()
 | 
				
			|||||||
	# The eval call is necessary for cases like:
 | 
						# The eval call is necessary for cases like:
 | 
				
			||||||
	# command_args="this \"is a\" test"
 | 
						# command_args="this \"is a\" test"
 | 
				
			||||||
	# to work properly.
 | 
						# to work properly.
 | 
				
			||||||
	eval supervise-daemon --start \
 | 
						eval supervise-daemon "${RC_SVCNAME}" --start \
 | 
				
			||||||
		${retry:+--retry} $retry \
 | 
							${retry:+--retry} $retry \
 | 
				
			||||||
		${chroot:+--chroot} $chroot \
 | 
							${chroot:+--chroot} $chroot \
 | 
				
			||||||
		${pidfile:+--pidfile} $pidfile \
 | 
							${pidfile:+--pidfile} $pidfile \
 | 
				
			||||||
@@ -49,14 +49,48 @@ supervise_stop()
 | 
				
			|||||||
	pidfile="${startpidfile:-$pidfile}"
 | 
						pidfile="${startpidfile:-$pidfile}"
 | 
				
			||||||
	[ -n "$pidfile" ] || return 0
 | 
						[ -n "$pidfile" ] || return 0
 | 
				
			||||||
	ebegin "Stopping ${name:-$RC_SVCNAME}"
 | 
						ebegin "Stopping ${name:-$RC_SVCNAME}"
 | 
				
			||||||
	supervise-daemon --stop \
 | 
						supervise-daemon "${RC_SVCNAME}" --stop \
 | 
				
			||||||
		${pidfile:+--pidfile} $chroot$pidfile \
 | 
							${pidfile:+--pidfile} $chroot$pidfile \
 | 
				
			||||||
		${stopsig:+--signal} $stopsig
 | 
							${stopsig:+--signal} $stopsig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	eend $? "Failed to stop ${name:-$RC_SVCNAME}"
 | 
						eend $? "Failed to stop ${name:-$RC_SVCNAME}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_check_supervised()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						local child_pid start_time
 | 
				
			||||||
 | 
						child_pid="$(service_get_value "child_pid")"
 | 
				
			||||||
 | 
						start_time="$(service_get_value "start_time")"
 | 
				
			||||||
 | 
						if [ -n "${child_pid}" ] && [ -n "${start_time}" ]; then
 | 
				
			||||||
 | 
							return 1
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
supervise_status()
 | 
					supervise_status()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	_status
 | 
						if service_stopping; then
 | 
				
			||||||
 | 
							ewarn "status: stopping"
 | 
				
			||||||
 | 
							return 4
 | 
				
			||||||
 | 
						elif service_starting; then
 | 
				
			||||||
 | 
							ewarn "status: starting"
 | 
				
			||||||
 | 
							return 8
 | 
				
			||||||
 | 
						elif service_inactive; then
 | 
				
			||||||
 | 
							ewarn "status: inactive"
 | 
				
			||||||
 | 
							return 16
 | 
				
			||||||
 | 
						elif service_started; then
 | 
				
			||||||
 | 
							if service_crashed; then
 | 
				
			||||||
 | 
								if ! _check_supervised; then
 | 
				
			||||||
 | 
									eerror "status: unsupervised"
 | 
				
			||||||
 | 
									return 64
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								eerror "status: crashed"
 | 
				
			||||||
 | 
								return 32
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
							einfo "status: started"
 | 
				
			||||||
 | 
							return 0
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							einfo "status: stopped"
 | 
				
			||||||
 | 
							return 3
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -155,7 +155,7 @@ rc_find_pids(const char *exec, const char *const *argv, uid_t uid, pid_t pid)
 | 
				
			|||||||
			if (rc <= 0)
 | 
								if (rc <= 0)
 | 
				
			||||||
				proc_ns[0] = '\0';
 | 
									proc_ns[0] = '\0';
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (strcmp(my_ns, proc_ns))
 | 
							if (strlen(my_ns) && strlen (proc_ns) && strcmp(my_ns, proc_ns))
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		if (uid) {
 | 
							if (uid) {
 | 
				
			||||||
			snprintf(buffer, sizeof(buffer), "/proc/%d", p);
 | 
								snprintf(buffer, sizeof(buffer), "/proc/%d", p);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -894,12 +894,15 @@ rc_service_value_set(const char *service, const char *option,
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	snprintf(p, sizeof(file) - (p - file), "/%s", option);
 | 
						snprintf(p, sizeof(file) - (p - file), "/%s", option);
 | 
				
			||||||
	if (!(fp = fopen(file, "w")))
 | 
						if (value) {
 | 
				
			||||||
		return false;
 | 
							if (!(fp = fopen(file, "w")))
 | 
				
			||||||
	if (value)
 | 
								return false;
 | 
				
			||||||
		fprintf(fp, "%s", value);
 | 
							fprintf(fp, "%s", value);
 | 
				
			||||||
	fclose(fp);
 | 
							fclose(fp);
 | 
				
			||||||
	return true;
 | 
						} else {
 | 
				
			||||||
 | 
							unlink(file);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
librc_hidden_def(rc_service_value_set)
 | 
					librc_hidden_def(rc_service_value_set)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -307,6 +307,9 @@ int run_stop_schedule(const char *applet,
 | 
				
			|||||||
	const char *const *p;
 | 
						const char *const *p;
 | 
				
			||||||
	bool progressed = false;
 | 
						bool progressed = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!(pid > 0 || exec || uid || (argv && *argv)))
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (exec)
 | 
						if (exec)
 | 
				
			||||||
		einfov("Will stop %s", exec);
 | 
							einfov("Will stop %s", exec);
 | 
				
			||||||
	if (pid > 0)
 | 
						if (pid > 0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -128,6 +128,8 @@ print_service(const char *service)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	char status[60];
 | 
						char status[60];
 | 
				
			||||||
	char uptime [40];
 | 
						char uptime [40];
 | 
				
			||||||
 | 
						char *child_pid = NULL;
 | 
				
			||||||
 | 
						char *start_time = NULL;
 | 
				
			||||||
	int cols =  printf(" %s", service);
 | 
						int cols =  printf(" %s", service);
 | 
				
			||||||
	const char *c = ecolor(ECOLOR_GOOD);
 | 
						const char *c = ecolor(ECOLOR_GOOD);
 | 
				
			||||||
	RC_SERVICE state = rc_service_state(service);
 | 
						RC_SERVICE state = rc_service_state(service);
 | 
				
			||||||
@@ -147,7 +149,14 @@ print_service(const char *service)
 | 
				
			|||||||
		    rc_service_daemons_crashed(service) &&
 | 
							    rc_service_daemons_crashed(service) &&
 | 
				
			||||||
		    errno != EACCES)
 | 
							    errno != EACCES)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			snprintf(status, sizeof(status), " crashed ");
 | 
								child_pid = rc_service_value_get(service, "child_pid");
 | 
				
			||||||
 | 
								start_time = rc_service_value_get(service, "start_time");
 | 
				
			||||||
 | 
								if (start_time && child_pid)
 | 
				
			||||||
 | 
									snprintf(status, sizeof(status), " unsupervised ");
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									snprintf(status, sizeof(status), " crashed ");
 | 
				
			||||||
 | 
								free(child_pid);
 | 
				
			||||||
 | 
								free(start_time);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			get_uptime(service, uptime, 40);
 | 
								get_uptime(service, uptime, 40);
 | 
				
			||||||
			snprintf(status, sizeof(status), " started %s", uptime);
 | 
								snprintf(status, sizeof(status), " started %s", uptime);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -279,6 +279,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int stdout_fd;
 | 
						int stdout_fd;
 | 
				
			||||||
	int stderr_fd;
 | 
						int stderr_fd;
 | 
				
			||||||
	pid_t pid, spid;
 | 
						pid_t pid, spid;
 | 
				
			||||||
 | 
						RC_PIDLIST *pids;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	char *svcname = getenv("RC_SVCNAME");
 | 
						char *svcname = getenv("RC_SVCNAME");
 | 
				
			||||||
	RC_STRINGLIST *env_list;
 | 
						RC_STRINGLIST *env_list;
 | 
				
			||||||
@@ -656,8 +657,15 @@ int main(int argc, char **argv)
 | 
				
			|||||||
			parse_schedule(applet, "0", sig);
 | 
								parse_schedule(applet, "0", sig);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			parse_schedule(applet, NULL, sig);
 | 
								parse_schedule(applet, NULL, sig);
 | 
				
			||||||
 | 
							if (pidfile) {
 | 
				
			||||||
 | 
								pid = get_pid(applet, pidfile);
 | 
				
			||||||
 | 
								if (pid == -1)
 | 
				
			||||||
 | 
									exit(EXIT_FAILURE);
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								pid = 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		i = run_stop_schedule(applet, exec, (const char *const *)margv,
 | 
							i = run_stop_schedule(applet, exec, (const char *const *)margv,
 | 
				
			||||||
		    get_pid(applet, pidfile), uid, test, progress, false);
 | 
							    pid, uid, test, progress, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (i < 0)
 | 
							if (i < 0)
 | 
				
			||||||
			/* We failed to stop something */
 | 
								/* We failed to stop something */
 | 
				
			||||||
@@ -683,10 +691,14 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	else
 | 
						else
 | 
				
			||||||
		pid = 0;
 | 
							pid = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (do_stop(applet, exec, (const char * const *)margv, pid, uid,
 | 
						if (pid)
 | 
				
			||||||
		0, test, false) > 0)
 | 
							pids = rc_find_pids(NULL, NULL, 0, pid);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							pids = rc_find_pids(exec, (const char * const *) argv, uid, 0);
 | 
				
			||||||
 | 
						if (pids)
 | 
				
			||||||
		eerrorx("%s: %s is already running", applet, exec);
 | 
							eerrorx("%s: %s is already running", applet, exec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						free(pids);
 | 
				
			||||||
	if (test) {
 | 
						if (test) {
 | 
				
			||||||
		if (rc_yesno(getenv("EINFO_QUIET")))
 | 
							if (rc_yesno(getenv("EINFO_QUIET")))
 | 
				
			||||||
			exit (EXIT_SUCCESS);
 | 
								exit (EXIT_SUCCESS);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,10 +159,11 @@ static void cleanup(void)
 | 
				
			|||||||
	free(changeuser);
 | 
						free(changeuser);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void re_exec(void)
 | 
					static void re_exec_supervisor(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	syslog(LOG_WARNING, "Re-executing supervise-daemon");
 | 
						syslog(LOG_WARNING, "Re-executing for %s", svcname);
 | 
				
			||||||
	execlp("supervise-daemon", "supervise-daemon", "--reexec", (char *) NULL);
 | 
						execlp("supervise-daemon", "supervise-daemon", svcname, "--reexec",
 | 
				
			||||||
 | 
								(char *) NULL);
 | 
				
			||||||
	syslog(LOG_ERR, "Unable to execute supervise-daemon: %s",
 | 
						syslog(LOG_ERR, "Unable to execute supervise-daemon: %s",
 | 
				
			||||||
			strerror(errno));
 | 
								strerror(errno));
 | 
				
			||||||
	exit(EXIT_FAILURE);
 | 
						exit(EXIT_FAILURE);
 | 
				
			||||||
@@ -179,7 +180,7 @@ static void handle_signal(int sig)
 | 
				
			|||||||
	/* Restore errno */
 | 
						/* Restore errno */
 | 
				
			||||||
	errno = serrno;
 | 
						errno = serrno;
 | 
				
			||||||
	if (! exiting)
 | 
						if (! exiting)
 | 
				
			||||||
		re_exec();
 | 
							re_exec_supervisor();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char * expand_home(const char *home, const char *path)
 | 
					static char * expand_home(const char *home, const char *path)
 | 
				
			||||||
@@ -402,7 +403,7 @@ static void child_process(char *exec, char **argv)
 | 
				
			|||||||
		strcat(cmdline, " ");
 | 
							strcat(cmdline, " ");
 | 
				
			||||||
		c++;
 | 
							c++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	syslog(LOG_INFO, "Running command line: %s", cmdline);
 | 
						syslog(LOG_INFO, "Child command line: %s", cmdline);
 | 
				
			||||||
	execvp(exec, argv);
 | 
						execvp(exec, argv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_PAM
 | 
					#ifdef HAVE_PAM
 | 
				
			||||||
@@ -420,7 +421,6 @@ static void supervisor(char *exec, char **argv)
 | 
				
			|||||||
	time_t respawn_now= 0;
 | 
						time_t respawn_now= 0;
 | 
				
			||||||
	time_t first_spawn= 0;
 | 
						time_t first_spawn= 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	openlog(applet, LOG_PID, LOG_DAEMON);
 | 
					 | 
				
			||||||
#ifndef RC_DEBUG
 | 
					#ifndef RC_DEBUG
 | 
				
			||||||
	signal_setup_restart(SIGHUP, handle_signal);
 | 
						signal_setup_restart(SIGHUP, handle_signal);
 | 
				
			||||||
	signal_setup_restart(SIGINT, handle_signal);
 | 
						signal_setup_restart(SIGINT, handle_signal);
 | 
				
			||||||
@@ -435,7 +435,9 @@ static void supervisor(char *exec, char **argv)
 | 
				
			|||||||
	signal_setup_restart(SIGUSR1, handle_signal);
 | 
						signal_setup_restart(SIGUSR1, handle_signal);
 | 
				
			||||||
	signal_setup_restart(SIGUSR2, handle_signal);
 | 
						signal_setup_restart(SIGUSR2, handle_signal);
 | 
				
			||||||
	signal_setup_restart(SIGBUS, handle_signal);
 | 
						signal_setup_restart(SIGBUS, handle_signal);
 | 
				
			||||||
 | 
					#ifdef SIGPOLL
 | 
				
			||||||
	signal_setup_restart(SIGPOLL, handle_signal);
 | 
						signal_setup_restart(SIGPOLL, handle_signal);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	signal_setup_restart(SIGPROF, handle_signal);
 | 
						signal_setup_restart(SIGPROF, handle_signal);
 | 
				
			||||||
	signal_setup_restart(SIGSYS, handle_signal);
 | 
						signal_setup_restart(SIGSYS, handle_signal);
 | 
				
			||||||
	signal_setup_restart(SIGTRAP, handle_signal);
 | 
						signal_setup_restart(SIGTRAP, handle_signal);
 | 
				
			||||||
@@ -446,8 +448,12 @@ static void supervisor(char *exec, char **argv)
 | 
				
			|||||||
	signal_setup_restart(SIGEMT, handle_signal);
 | 
						signal_setup_restart(SIGEMT, handle_signal);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	signal_setup_restart(SIGIO, handle_signal);
 | 
						signal_setup_restart(SIGIO, handle_signal);
 | 
				
			||||||
 | 
					#ifdef SIGPWR
 | 
				
			||||||
	signal_setup_restart(SIGPWR, handle_signal);
 | 
						signal_setup_restart(SIGPWR, handle_signal);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGUNUSED
 | 
				
			||||||
	signal_setup_restart(SIGUNUSED, handle_signal);
 | 
						signal_setup_restart(SIGUNUSED, handle_signal);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifdef SIGRTMIN
 | 
					#ifdef SIGRTMIN
 | 
				
			||||||
	for (i = SIGRTMIN; i <= SIGRTMAX; i++)
 | 
						for (i = SIGRTMIN; i <= SIGRTMAX; i++)
 | 
				
			||||||
		signal_setup_restart(i, handle_signal);
 | 
							signal_setup_restart(i, handle_signal);
 | 
				
			||||||
@@ -521,6 +527,7 @@ static void supervisor(char *exec, char **argv)
 | 
				
			|||||||
		rc_service_daemon_set(svcname, exec, (const char *const *)argv,
 | 
							rc_service_daemon_set(svcname, exec, (const char *const *)argv,
 | 
				
			||||||
				pidfile, false);
 | 
									pidfile, false);
 | 
				
			||||||
		rc_service_mark(svcname, RC_SERVICE_STOPPED);
 | 
							rc_service_mark(svcname, RC_SERVICE_STOPPED);
 | 
				
			||||||
 | 
							rc_service_value_set(svcname, "child_pid", NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	exit(EXIT_SUCCESS);
 | 
						exit(EXIT_SUCCESS);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -554,10 +561,17 @@ int main(int argc, char **argv)
 | 
				
			|||||||
	int child_argc = 0;
 | 
						int child_argc = 0;
 | 
				
			||||||
	char **child_argv = NULL;
 | 
						char **child_argv = NULL;
 | 
				
			||||||
	char *str = NULL;
 | 
						char *str = NULL;
 | 
				
			||||||
 | 
						char cmdline[PATH_MAX];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	applet = basename_c(argv[0]);
 | 
						applet = basename_c(argv[0]);
 | 
				
			||||||
	atexit(cleanup);
 | 
						atexit(cleanup);
 | 
				
			||||||
	svcname = getenv("RC_SVCNAME");
 | 
						svcname = getenv("RC_SVCNAME");
 | 
				
			||||||
 | 
						if (!svcname)
 | 
				
			||||||
 | 
							eerrorx("%s: The RC_SVCNAME environment variable is not set", applet);
 | 
				
			||||||
 | 
						openlog(applet, LOG_PID, LOG_DAEMON);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (argc >= 1 && svcname && strcmp(argv[1], svcname))
 | 
				
			||||||
 | 
							eerrorx("%s: the first argument must be %s", applet, svcname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((tmp = getenv("SSD_NICELEVEL")))
 | 
						if ((tmp = getenv("SSD_NICELEVEL")))
 | 
				
			||||||
		if (sscanf(tmp, "%d", &nicelevel) != 1)
 | 
							if (sscanf(tmp, "%d", &nicelevel) != 1)
 | 
				
			||||||
@@ -579,6 +593,17 @@ int main(int argc, char **argv)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*cmdline = '\0';
 | 
				
			||||||
 | 
						c = argv;
 | 
				
			||||||
 | 
						while (c && *c) {
 | 
				
			||||||
 | 
							strcat(cmdline, *c);
 | 
				
			||||||
 | 
							strcat(cmdline, " ");
 | 
				
			||||||
 | 
							c++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (svcname) {
 | 
				
			||||||
 | 
							argc--;
 | 
				
			||||||
 | 
							argv++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	while ((opt = getopt_long(argc, argv, getoptstring, longopts,
 | 
						while ((opt = getopt_long(argc, argv, getoptstring, longopts,
 | 
				
			||||||
		    (int *) 0)) != -1)
 | 
							    (int *) 0)) != -1)
 | 
				
			||||||
		switch (opt) {
 | 
							switch (opt) {
 | 
				
			||||||
@@ -717,7 +742,6 @@ int main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (!pidfile && !reexec)
 | 
						if (!pidfile && !reexec)
 | 
				
			||||||
		eerrorx("%s: --pidfile must be specified", applet);
 | 
							eerrorx("%s: --pidfile must be specified", applet);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	endpwent();
 | 
						endpwent();
 | 
				
			||||||
	argc -= optind;
 | 
						argc -= optind;
 | 
				
			||||||
	argv += optind;
 | 
						argv += optind;
 | 
				
			||||||
@@ -815,6 +839,7 @@ int main(int argc, char **argv)
 | 
				
			|||||||
			parse_schedule(applet, NULL, sig);
 | 
								parse_schedule(applet, NULL, sig);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		einfov("Detaching to start `%s'", exec);
 | 
							einfov("Detaching to start `%s'", exec);
 | 
				
			||||||
 | 
							syslog(LOG_INFO, "Supervisor command line: %s", cmdline);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Remove existing pidfile */
 | 
							/* Remove existing pidfile */
 | 
				
			||||||
		if (pidfile)
 | 
							if (pidfile)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user