Fix init-d-script systemd redirection (#826214)
Hi
This branch consists of 2 commits for properly redirecting scripts using /lib/init/init-d-script.
First commit makes use of __init_d_script_name variable set by new init-d-script versions (sysvinit-utils > 2.88dsf-59.11) to properly redirect in both situations where init-d-script is sourced or used as the shebang.
Second commit uses more advanced heuristics and properly redirects in every condition (even when __init_d_script_name is not set in sysvinit-utils < 2.88dsf-59.11).
In the tests I manually conducted I've observed no breakage under both old and new sysvinit-utils versions, with old standalone init scripts or scripts utilizing init-d-script as shebang or simply sources it.
The advantage of the second commit is that redirection works even if __init_d_script_name is not set (in old sysvinit-utils versions). If that commit is applied __init_d_script_name can be dropped from init-d-script (and after that the check for __init_d_script_name can be removed from 40-systemd)
In summary:
Current situation for redirection:
| init-d-script \ __init_d_script_name is | Set (new version) | Not set (old version) | 
|---|---|---|
| Sourced | Works | Doesn't work | 
| Shebang | Doesn't work | Doesn't work | 
Redirection after first commit:
| init-d-script \ __init_d_script_name is | Set (new version) | Not set (old version) | 
|---|---|---|
| Sourced | Works | Doesn't work | 
| Shebang | Works | Doesn't work | 
Redirection after second commit:
| init-d-script \ __init_d_script_name is | Set (new version) | Not set (old version) | 
|---|---|---|
| Sourced | Works | Works | 
| Shebang | Works | Works |