Jens Persson escribió:
> Hello folks.
> 
> Taken from IRC:
> 
> <ismaell> hi again qupada
> <ismaell> i was thinking about service_file...
> <ismaell> when you define a service like in system/getty
> <ismaell> there's no problem, because you want system/agetty/*
> <ismaell> but when it's a single service, if you don't specify the service
> <ismaell> and you try to load, service/some/weird/thing
> <ismaell> it will register it :(
> <ismaell> that's dangerous...
> <qupada> i was under the impression it would just fail with a 
> 'NOT_FOUND' error
> <qupada> in rather the same manner that it does at the moment
> <ismaell> if you don't use the "-s" param., setup() defines whatever is 
> in $SERVICE :(
> <ismaell> the solution is simple
> <qupada> $ ngc -u daemon/some/shit/i/made/up initNGControl (0.6.9-svn ) 
> by Jimmy Wennlund http://www.initng.org/
> <qupada> Service "daemon/some/shit/i/made/up" previously failed (NOT_FOUND),
> <qupada> it needs to be zaped "ngc -z daemon/some/shit/i/made/up", so 
> initng will forget the failing state before you are able to retry start it.
> <qupada> what's the problem with that behaviour?
> <ismaell> no no, that's not what i mean.
> <ismaell> look at system/clock.s
> <qupada> well then i'm afraid i don't have the faintest idea what you're 
> talking about
> <ismaell> if you use it in your system
> <ismaell> and you try to start system/clock/something, it will register 
> and start it :(
> 
> I thought that if you are not specifying anything it will just use tho 
> path instead, like "system/clock" in the example above.
> So: iregister service <=> iregister -s "system/clock" service
> Or am I missing a point here?

No it uses $SERVICE, that is set by the service_file plugin.

Example: when the plugin searchs for system/udev/filldev, it sets
$SERVICE to that, then splits the name, and starts the search adding
one element at a time, until it finds <INITNG_ROOT>/system/udev, then
it executes it.

runiscript takes care of setting $SERVICE from the path
_if it is not set_, then it sets $NAME. After everything is set up it
calls the wrapper script.

So I think that what we need is a function like the following:

isservice()
{
        while [ "${#}" -gt 0 ]; do
                [ "${SERVICE}" = "${1}" ] && return 0
                shift
        done
        return 1
}

So we can use it like:

isservice system/udev/{filldev,udevd,mountdev} || exit 1

or

if isservice system/agetty; then
        ...
        exit 0
fi
...

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
_______________________________________________
Initng mailing list
[email protected]
http://jw.dyndns.org/mailman/listinfo/initng

Reply via email to