[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Cut of final 'f'

From: Patrice GUERLAIS
Subject: Cut of final 'f'
Date: Tue, 29 Nov 2005 10:08:48 +0100 (CET)

Hi all,

I'm in the process of upgrading all my clients from 2.0.7p3 to 2.1.17. But 
before that upgrade, I'm conducting some tests to ensure everything is ok, and 
I've found a strange behaviour.
I've encapsulated the use of cfengine in a Perl application, which generates 
some cfrun commands. The call of cfrun is done with parameters (in a -Dxxx 
way), so as to inform the client of what has to be done. Nothing fantastic in 
that use of cfengine.
What becomes strange is that when the class is exactly 'cfengine_conf', the 
last 'f' is lost between cfrun and cfservd. I tried a lot of other strings to 
figure out what's going on. The conclusion is that any string which ends with 
an 'f' looses this last character. Any other last character I tried (g, h, ...) 
has been kept...

For example :
/usr/local/cfengine/sbin/cfrun -f /tmp/cfrun.hosts.16229 -T -v -- -v -Daf   
<----------------- the final 'f' is present
cfrun(0):         .......... [ Hailing <client_ip> ] ..........
Connecting to server <client_ip> to port 0 with options  -v -Daf            
<----------------- the final 'f' is still present

(Non privileged user...)

Loaded /home/patrice/.cfengine/ppkeys/root-<client_ip>.pub
Connect to <client_ip> = <client_ip> on port cfengine

(Non privileged user...)

Loaded /home/patrice/.cfengine/ppkeys/root-<client_ip>.pub Strong authentication of server=<client_ip> 
connection confirmed
<client_ip> replies..

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

cfservd Executing /usr/local/cfengine/sbin/cfagent --no-splay --inform -v -Da   
<---------------- the final 'f' has been lost

I've found in cfservd.c the lines which are responsible of the elimination of 
the 'f' at the end of an identifier. More generally, every 'f' at the end of a 
word and followed by a blank is discarded, I don't know on which purpose. It 
looks as if the involved section of code has been forgotten in the development 
process :-(

The comment just above the incriminated line says "Blank out -K -f". But indeed 
it blanks out -K, -f, and any 'f' followed by a blank :-( Just suppress the 
blanking of 'f<blank>' and my problem disappears, but I can't figure if it 
doesn't create another problem elsewhere...

<2.1.17, cfservd.c #1620>
<    if ((strncmp(sp,"-K",2) == 0) || (strncmp(sp,"-f",2) == 0))
>    if ((strncmp(sp,"-K",2) == 0) || (strncmp(sp,"-f",2) == 0) || 
> (strncmp(sp,"f ",2) == 0))
</2.1.17 cfservd.c #1620>

I've checked in 2.1.16, the same line exists.
Is it on purpose, or a relic of the development ? Does anybody can explain to 
me the how and why ?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]