mirror of
https://github.com/troglobit/finit.git
synced 2026-11-13 17:00:16 +00:00
service: don't take a command named like an option for one
A run/task/service whose command starts like an option without a ':'
lost its command, e.g. the example in finit.conf(5):
run [2345] @joe:users logger "Hello world"
was registered as the log option, running "Hello world". Same for
pidof, pidproxy, cgroupfs-mount, and in block format too.
The option parser matches with MATCH_CMD(), a prefix match, also for
the options with no trailing ':' to end the prefix: log, pid, cgroup,
respawn, nowarn, and the rest.
Match these against the whole token, allowing only the separator that
starts a value: "log:", "pid:", "cgroup." and "cgroup:".
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
3 files changed
+44
-9
No files matched your search
@@ -89,6 +89,16 @@ retry 'assert_cmd pick "serv -np -i pick -- extra"'
|
||||
assert_desc "Dashes" pick
|
||||
assert_num_children 1 serv
|
||||
|
||||
# Options are matched as whole tokens, so a command that merely starts
|
||||
# like one, pidof vs. pid, is still the command.
|
||||
say 'A command named like an option is the command'
|
||||
run "echo 'task lookalike {' > $FINIT_CONF"
|
||||
run "echo ' command = \"pidof serv\"' >> $FINIT_CONF"
|
||||
run "echo '}' >> $FINIT_CONF"
|
||||
run "initctl reload"
|
||||
|
||||
retry 'assert_cmd lookalike "pidof 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.
|
||||
|
||||
Reference in new issue
Block a user