On Dec 18, 2007 2:03 PM, Sebastian Harl &lt;<a href="mailto:sh@tokkee.org" target="_blank">sh@tokkee.org</a>&gt; wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Hi Justo,</blockquote><div>Hi Sebastian,<br>&nbsp;&nbsp; attach a new file with all your comments (I hope !!)&nbsp; ;-) <br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Just a few quick notes on your code after a first, quick glance:
<br><br>On Tue, Dec 18, 2007 at 12:45:08PM +0100, Justo Alonso wrote:<br>&gt; static size_t tomcat_curl_callback (void *buf, size_t size, size_t nmemb, void *stream)<br>&gt; {<br>&gt; &nbsp; &nbsp; &nbsp; size_t len = size * nmemb;<br>
&gt; &nbsp; &nbsp; &nbsp; char *new_buffer = NULL;
<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; /* maybe curl call funtion on last read and no bytes ... ?!?!?!? */<br>&gt; &nbsp; &nbsp; &nbsp; if( len == 0 )<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return(0);<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; if( (new_buffer = (char *) realloc( tomcat_curl_buffer, tomcat_curl_buffer_len + len ) ) == NULL )
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return -1;<br><br>Doing a lot of free()/malloc()&#39;s frequently might lead to somewhat poor<br>performance if using glibc. Thus I suggest doing something like:<br><br>1) Introduce a new variable &quot;tomcat_curl_buffer_fill&quot; (or similar) indicating
<br> &nbsp; how much memory is currently used in the buffer.<br><br>2) Realloc if the buffer is too small:<br><br> &nbsp;if (tomcat_curl_buffer_len &lt; tomcat_curl_buffer_fill + len)<br> &nbsp; &nbsp; &nbsp;new_buffer = realloc ...<br> &nbsp;...<br>
<br>
3) In tomcat_read(): skip sfree() and simply reset tomcat_curL_buffer_fill to<br> &nbsp; zero.<br><br>Does that sound reasonable to you?</blockquote><div><br>Yes, I need to refresh my algorithms knowleges ;-)<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br><br>&gt; &nbsp; &nbsp; &nbsp; ERROR (&quot;tomcat: unable to create dinamic instance&#39;s list. [%s]&quot;, ci-&gt;values[0].value.string );<br><br>The correct spelling is &quot;dynamic&quot; instead of &quot;dinamic&quot;.<br></blockquote>

<div><br>And use google translator too ...&nbsp; If you want, change the error/debug messages to be in a correct english<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>&gt; &nbsp; if( tomcat_instances == NULL &amp;&amp; ( ( tomcat_instances = llist_create() ) == NULL ) ) {<br><br>Just a small nitpick about coding style:<br><br>Please use one space after &quot;if&quot;, &quot;while&quot;, etc. keywords and function names and
<br>skip spaces after opening braces and before closing braces. Operators should<br>always be surrounded by a single space on both sides. E.g.:<br><br> &nbsp;if ((tomcat_instances == NULL)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;&amp; ((tomcat_instances = llist_craete()) == NULL)) {
<br> &nbsp; &nbsp; &nbsp;...<br><br>Most importantly: try to be consistent - you&#39;ve mixed several different coding<br>styles within your code which makes it kinda hard to read.<br></blockquote><div><br>It&#39;s ok now (I think) ... cut &amp; paste source files ... ;-)
<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>&gt; &nbsp; &nbsp; &nbsp; for( instance = llist_head(tomcat_instances); instance; instance = instance-&gt;next ) {
<br><br>Please use explicit conditional expressions: &quot;instance != NULL&quot; rather than<br>&quot;instance&quot;.<br></blockquote><div><br>ok<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; gc_name =attr-&gt;children == NULL ? NULL : attr-&gt;children-&gt;content;<br><br>Imho this should be written as follows to increase readability:<br><br> &nbsp;gc_name = (attr-&gt;children == NULL) ? NULL : attr-&gt;children-&gt;content;
<br><br>The missing space after &quot;=&quot; and the missing braces make it kinda hard to see<br>what&#39;s supposed to be going on.<br><div></div></blockquote><div><br>ok<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div><br>&gt; static int tomcat_read (void)<br>&gt; {<br></div>&gt; &nbsp; &nbsp; &nbsp; llentry_t *instance = NULL;<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; xmlDocPtr doc;<br>&gt; &nbsp; &nbsp; &nbsp; xmlNode *root_element = NULL;<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; int success = 0;
<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; for( instance = llist_head(tomcat_instances); instance; instance = instance-&gt;next ) {<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tomcat_instance_t *ti = (tomcat_instance_t *) instance-&gt;value;<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( ti == NULL ) {
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ERROR (&quot;tomcat: read, instance object is null for instance %s&quot;, instance-&gt;key);<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (-1);<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (ti-&gt;curl == NULL)
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (-1);<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (ti-&gt;url == NULL)<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (-1);<br><br>Is it really appropriate to return an error in this case? It seems like this<br>
is not supposed to happen at all as those values should be set correctly when
<br>configuring the plugin, right? In this case, assert() would imho be more<br>appropriate, else &quot;continue&quot; should be used.</blockquote><div><br>It&#39;s ok. I change this&nbsp; check to init function (a instance should have a url parameter)
<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><br>Else the code looks fine to me :-)</blockquote><div><br>fine, but hard to read it !! ;-)
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><br>Cheers,<br>Sebastian<br><font color="#888888"></font></blockquote><div>

<br>j <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font color="#888888"><br>--<br>Sebastian &quot;tokkee&quot; Harl +++ GnuPG-ID: 0x8501C7FC +++ 
<a href="http://tokkee.org/" target="_blank">http://tokkee.org/</a><br><br>Those who would give up Essential Liberty to purchase a little Temporary<br>Safety, deserve neither Liberty nor Safety. &nbsp; &nbsp; &nbsp; &nbsp; -- Benjamin Franklin
<br><br></font><br>-----BEGIN PGP SIGNATURE-----<br>Version: GnuPG v1.4.6 (GNU/Linux)<br><br>iD8DBQFHZ8UXEFEKc4UBx/wRAv6fAJ9Hpm1ZDDpSA7BUQ+Nqr0kFz6/fqgCfb0WM<br>R6cgyqNccRt3xFlyrtoPN30=<br>=MsgA<br>-----END PGP SIGNATURE-----
<br><br>_______________________________________________<br>collectd mailing list<br><a href="mailto:collectd@verplant.org" target="_blank">collectd@verplant.org</a><br><a href="http://mailman.verplant.org/listinfo/collectd" target="_blank">

http://mailman.verplant.org/listinfo/collectd</a><br><br></blockquote></div><br>