Ismael Luceno wrote:
> 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
> ..
Yes i think that's exactly what I meant.  So if the name is not set with 
-s it should be set to $SERVICE_PATH and not to $NAME. We must keep such 
dirty hacks outside of the scripts, no.

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

Reply via email to