<div dir="ltr">Hi Kristian,<div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I think it's good to go - however, inlining the patch messed up the<br>
whitespace.  Ideally, send patches using git send-email, which can be<br>
configured to use smtp servers, and you can pass --annotate if you<br>
want to add a message or comment to the patch (put it after the ---<br>
that indicates the end of the commit message).  Or as a last resort,<br>
attach the patch.<br></blockquote><div><br></div><div style>I forgot to attach the patch this last time around.  Sorry about that.  I'll just resend the patch with git send-email, as you suggest.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

As for the next thing, good catch.  I'd do something like<br>
<br>
    for (p = config_dirs; p != NULL; p = next) {<br>
        next = strchrnul(p, ':');<br>
        if (*next == ':')<br>
            next++;<br>
<br>
        ...<br>
<br>
to keep the for (...) more readable.</blockquote><div><br></div><div style>Changing the loop termination to "p != NULL" causes an infinite loop since strchnul() returns a pointer to the null character '\0', not the NULL pointer.  Also, the moving the next pointer past the colon must be done after path construction, other the colon ends up at the end of the path.  How's this instead:</div>
<div style><br></div><div style><div><span class="" style="white-space:pre">    </span>for (p = config_dirs; *p != '\0'; p = next) {</div><div><span class="" style="white-space:pre">              </span>next = strchrnul(p, ':');</div>
<div><span class="" style="white-space:pre">            </span>snprintf(path, sizeof path,</div><div><span class="" style="white-space:pre">                        </span> "%.*s/weston/%s", (int)(next - p), p, name);</div><div><span class="" style="white-space:pre">            </span>fd = open(path, O_RDONLY | O_CLOEXEC);</div>
<div><span class="" style="white-space:pre">            </span>if (fd >= 0)</div><div><span class="" style="white-space:pre">                    </span>return fd;</div><div><br></div><div><span class="" style="white-space:pre">                </span>if (*next == ':')</div>
<div><span class="" style="white-space:pre">                    </span>next++;</div><div><span class="" style="white-space:pre">    </span>}</div></div><div><br></div><div style>Note that I also had to cast "next - p" in the snprintf() call to int since the format specifier "%*.s" wants an int but the pointer difference on my 64 bit Ubuntu box is a long int, at least according to the format specifier warning I get:</div>
<div style><div><br></div><div>foo.c: In function ‘open_config_file’:</div><div>foo.c:53:5: warning: field precision specifier ‘.*’ expects argument of type ‘int’, but argument 4 has type ‘long int’ [-Wformat]<br></div><div>
<br></div></div><div style>foo.c in this case is a simple test program I wrote.  I assume the cast is safe since "next - p" should always fall within the range of type int.</div><div style><br></div><div style>Anyway, I'll resend the patch with the above changes with git send-email.</div>
<div style><br></div><div style>Thanks Kristian!</div><div style>-Ossama</div><div style><br></div><div><br></div></div></div></div>