<blockquote>
<p>I'd argue that, for future APIs, we don't export variadic ones. These are generally just for convinience. But plugins can easily do their own string formatting and give us the result.</p>
</blockquote>
<p>Of course it's for convenience. Imagine writing the following line of code without using any functions with variadic arguments:</p>
<div class="highlight highlight-source-c"><pre><span class="pl-en">printf</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-c1">%s</span> is <span class="pl-c1">%d</span><span class="pl-pds">"</span></span>, name, age);</pre></div>
<p>Even if you did use one variadic function (ex. <code>g_strdup_printf</code>), it's still 3 lines of code and a potential source for leaking memory.</p>
<blockquote>
<p>This part of GI is not buggy.</p>
</blockquote>
<p>Ok, it's not buggy, it's just a missing feature which makes it impossible to export all of the C API to other languages, thus requiring any bindings to C be incomplete or rewriting the C API to be less convenient.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/pull/1748#issuecomment-379455887">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJ_zS-VwaY62VMYbBudy0WbmLVj0Zks5tmIRMgaJpZM4RqazS">mute the thread</a>.<img src="https://github.com/notifications/beacon/ABDrJxV76PkPgPFHr6BeeqPQONpTWx5_ks5tmIRMgaJpZM4RqazS.gif" height="1" width="1" alt="" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/geany/geany/pull/1748#issuecomment-379455887"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@codebrainz in #1748: \u003e I'd argue that, for future APIs, we don't export variadic ones. These are generally just for convinience. But plugins can easily do their own string formatting and give us the result.\r\n\r\nOf course it's for convenience. Imagine writing the following line of code without using any functions with variadic arguments:\r\n\r\n```c\r\nprintf(\"%s is %d\", name, age);\r\n```\r\nEven if you did use one variadic function (ex. `g_strdup_printf`), it's still 3 lines of code and a potential source for leaking memory.\r\n\r\n\u003e This part of GI is not buggy.\r\n\r\nOk, it's not buggy, it's just a missing feature which makes it impossible to export all of the C API to other languages, thus requiring any bindings to C be incomplete or rewriting the C API to be less convenient."}],"action":{"name":"View Pull Request","url":"https://github.com/geany/geany/pull/1748#issuecomment-379455887"}}}</script>