mirror of
https://github.com/troglobit/finit.git
synced 2026-11-13 17:00:16 +00:00
conf: pass -- in a block command to the program
A command that takes -- as an argument lost it, and everything after
it, to the description:
service name {
command = "cmd -- arg"
description = "a cmd"
}
ran `cmd` with description `arg`.
The block translator builds a legacy one-liner, appending the
description as "-- text", and service_register() splits that line at
the first "-- ", here the one in the command.
Split the description off only for legacy one-liners. Blocks now hand
it to the new service_register_desc() as an argument.
Fixes #512
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
5 files changed
+69
-30
No files matched your search
+14
-1
@@ -76,6 +76,19 @@ retry 'assert_cmd pick "serv -np -i pick"'
|
||||
assert_desc "Single command" pick
|
||||
assert_num_children 1 serv
|
||||
|
||||
# The description has its own setting, so a -- in the command is an
|
||||
# argument to it, see issue #512.
|
||||
say 'A -- in the command is passed on to it'
|
||||
run "echo 'service pick {' > $FINIT_CONF"
|
||||
run "echo ' description = \"Dashes\"' >> $FINIT_CONF"
|
||||
run "echo ' command = \"serv -np -i pick -- extra\"' >> $FINIT_CONF"
|
||||
run "echo '}' >> $FINIT_CONF"
|
||||
run "initctl reload"
|
||||
|
||||
retry 'assert_cmd pick "serv -np -i pick -- extra"'
|
||||
assert_desc "Dashes" pick
|
||||
assert_num_children 1 serv
|
||||
|
||||
# A tty block takes the same list, its command is the getty to run.
|
||||
# Asserting it is loaded is enough here, a getty in the test namespace
|
||||
# has no terminal to attach to.
|
||||
@@ -90,7 +103,7 @@ retry 'assert_cmd tty "serv -np -i ttypick"'
|
||||
|
||||
# Nothing resolves, so the block is skipped the same way a single
|
||||
# missing command is. The leading - only decides whether that is
|
||||
# quiet, service_register() bails before svc_new() either way.
|
||||
# quiet, service_register_desc() bails before svc_new() either way.
|
||||
say 'A block whose candidates are all missing is skipped'
|
||||
run "echo 'service ghost {' > $FINIT_CONF"
|
||||
run "echo ' command = { \"-/no/such/one\", \"-/no/such/two\" }' >> $FINIT_CONF"
|
||||
|
||||
Reference in new issue
Block a user