[PATCH] Fix default value for enable_environment_macros
Ton Voon
tonvoon at gmail.com
Tue Jan 15 12:34:07 CET 2013
On 15 Jan 2013, at 11:12, Andreas Ericsson wrote:
> On 01/15/2013 10:05 AM, Ton Voon wrote:
>> Hi Andreas,
>>
>> On 14 Jan 2013, at 10:08, Andreas Ericsson wrote:
>>
>>> On 01/14/2013 10:30 AM, Ton Voon wrote:
>>>> What I can't work out is how to set the env property in "define command". Can you provide some pointers and assistance?
>>>>
>>> Using a secondary list of key/value vectors. Since commands are usually
>>> fewer than 500 and remain pretty static, I'd just use a command->id
>>> indexed pointer-to-pointer list of key value vectors.
>>
>> I couldn't work out how to create this array. I modelled it on command_ary, but it kept segfaulting when setting this first array element. I'm sure there's a malloc required somewhere, but I couldn't see how command_ary was being initialised. In the end, I've extended the command object to include an env attribute.
>>
>
> That's the forbidden solution. Objects have to be the same size in all compiled
> versions.
Why is this forbidden? Nagios 4 is not released yet, right?
> You have to make an init function for it, allocate the right amount of memory
> and then stash the env pointers in a linked list starting at the right slot
> in the memory index.
Can I reverse the question to ask - where is this initialisation currently handled for command_ary and timeperiod_ary? I can see the my_free() calls in objects.c, but I can't see where the init is.
>
>> The next problem is that with an arbitrary list of environment variables, I need to pass this to the worker job creator. I can't see how to extend the wproc_* jobs, but it looks like the nagios_macros are not used. So I propose that we change:
>>
>> static int wproc_run_job(worker_job *job, nagios_macros *mac)
>>
>> to
>>
>> static int wproc_run_job(worker_job *job, char **env)
>>
>> Is this acceptable?
>>
>
> Since macros aren't used, yes, although it would be better to pass a
> key value vector directly, since we can avoid a ton of strlen() calls
> that way and also allow any random values to be passed to the command
> calls, which allows for future extensions.
I'm more comfortable doing it as an array of strings, though I can look at kvvec.
Ton
------------------------------------------------------------------------------
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only - learn more at:
http://p.sf.net/sfu/learnmore_122512
More information about the Developers
mailing list