Deploying upstream@bf2c6e26c6ea8ea7ab1ea04d15e2adeaf30e4a14: Publish libakerror article, update plan

This commit is contained in:
2026-01-11 03:07:18 +00:00
parent 89dce0f082
commit 5c3b6e1498
63 changed files with 503 additions and 503 deletions

View File

@@ -346,7 +346,7 @@
style="padding-right: 2px;">
</i>TOC
</div>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Getting-roasted-in-IRC-is-motivational"><span class="toc-text">Getting roasted in IRC is motivational</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#There-is-no-problem-C-is-not-broken"><span class="toc-text">There is no problem. C is not broken.</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Because-we-can-do-better"><span class="toc-text">Because we can do better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Check-errno-stupid"><span class="toc-text">Check errno, stupid</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-libakerror-way"><span class="toc-text">The libakerror way</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#But-the-macros-hide-a-lot-of-complexity"><span class="toc-text">But the macros hide a lot of complexity</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#We-don%E2%80%99t-like-it"><span class="toc-text">We dont like it</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Why-I-like-it"><span class="toc-text">Why I like it</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-errors-get-checked"><span class="toc-text">Ensuring errors get checked</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Debugging-when-all-you-have-is-logs"><span class="toc-text">Debugging when all you have is logs</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-cleanup-behavior-occurs-on-error"><span class="toc-text">Ensuring cleanup behavior occurs on error</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Managing-early-exit-handlers-with-cleanup-without-goto"><span class="toc-text">Managing early exit handlers with cleanup without goto</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Solving-a-problem-you-don%E2%80%99t-actually-have"><span class="toc-text">Solving a problem you dont actually have</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#I-still-don%E2%80%99t-like-it"><span class="toc-text">I still dont like it</span></a>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Getting-roasted-in-IRC-is-motivational"><span class="toc-text">Getting roasted in IRC is motivational</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#There-is-no-problem-C-is-not-broken"><span class="toc-text">There is no problem. C is not broken.</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Because-we-can-do-better"><span class="toc-text">Because we can do better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Check-errno-stupid"><span class="toc-text">Check errno, stupid</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-libakerror-way"><span class="toc-text">The libakerror way</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#But-the-macros-hide-a-lot-of-complexity"><span class="toc-text">But the macros hide a lot of complexity</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#We-don%E2%80%99t-like-it"><span class="toc-text">We dont like it</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Why-I-like-it"><span class="toc-text">Why I like it</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-errors-get-checked"><span class="toc-text">Ensuring errors get checked</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Debugging-when-all-you-have-is-logs"><span class="toc-text">Debugging when all you have is logs</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-cleanup-behavior-occurs-on-error"><span class="toc-text">Ensuring cleanup behavior occurs on error</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Managing-early-exit-handlers-with-cleanup-without-goto"><span class="toc-text">Managing early exit handlers with cleanup without goto</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Solving-a-problem-you-don%E2%80%99t-actually-have"><span class="toc-text">Solving a problem you dont actually have</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-still-don%E2%80%99t-like-it"><span class="toc-text">I still dont like it</span></a></li></ol>
</div>
</article>
@@ -461,7 +461,7 @@
</h1>
</header>
<div class="post-meta post-show-meta">
<time datetime="2026-01-11T03:03:05.994Z">
<time datetime="2026-01-11T03:06:29.621Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
@@ -1152,14 +1152,14 @@ _writeToFile_cleanup<span class="token operator">:</span>
<li>Returns 0 at the end of the function assuming everything happens correctly</li>
</ol>
<p>And it does it all without <code>goto</code>.</p>
<h1 id="Solving-a-problem-you-dont-actually-have"><a href="#Solving-a-problem-you-dont-actually-have" class="headerlink" title="Solving a problem you dont actually have"></a>Solving a problem you dont actually have</h1><p>So, lets revisit the claim</p>
<h2 id="Solving-a-problem-you-dont-actually-have"><a href="#Solving-a-problem-you-dont-actually-have" class="headerlink" title="Solving a problem you dont actually have"></a>Solving a problem you dont actually have</h2><p>So, lets revisit the claim</p>
<pre class="line-numbers language-none"><code class="language-none">&lt;#c user&gt; this is solving a problem that doesn&#39;t exist<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre>
<ol>
<li>We have been able to demonstrate several varieties of problems which are very real, very common, and very much present even in our beloved <strong>C</strong> language.</li>
<li>We have been able to demonstrate that <code>libakerror</code> solves these problems quite handily</li>
</ol>
<h1 id="I-still-dont-like-it"><a href="#I-still-dont-like-it" class="headerlink" title="I still dont like it"></a>I still dont like it</h1><p>And thats fine. Its okay for people to like different things. But if you have the same kinds of problems Ive described here, and you love (or want to love) writing in C, but error handling has made you gunshy … Feel free to take this code and use it. Its free (as in speech).</p>
<h2 id="I-still-dont-like-it"><a href="#I-still-dont-like-it" class="headerlink" title="I still dont like it"></a>I still dont like it</h2><p>And thats fine. Its okay for people to like different things. But if you have the same kinds of problems Ive described here, and you love (or want to love) writing in C, but error handling has made you gunshy … Feel free to take this code and use it. Its free (as in speech).</p>
</div>
<div>
@@ -1185,12 +1185,12 @@ _writeToFile_cleanup<span class="token operator">:</span>
<div class="nav-item-next">
<a
href="/2026/01/11/News-2026-Week-1/"
href="/2025/01/04/Socrates-got-a-raw-deal/"
class="nav-link">
<div>
<div class="nav-label">Next</div>
<div class="nav-title">News - 2026 - Week 1 </div>
<div class="nav-title">Socrates got a raw deal </div>
</div>
<i class="iconfont icon-right nav-next-icon"></i>
@@ -1208,7 +1208,7 @@ _writeToFile_cleanup<span class="token operator">:</span>
style="padding-right: 2px;">
</i>TOC
</div>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Getting-roasted-in-IRC-is-motivational"><span class="toc-text">Getting roasted in IRC is motivational</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#There-is-no-problem-C-is-not-broken"><span class="toc-text">There is no problem. C is not broken.</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Because-we-can-do-better"><span class="toc-text">Because we can do better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Check-errno-stupid"><span class="toc-text">Check errno, stupid</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-libakerror-way"><span class="toc-text">The libakerror way</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#But-the-macros-hide-a-lot-of-complexity"><span class="toc-text">But the macros hide a lot of complexity</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#We-don%E2%80%99t-like-it"><span class="toc-text">We dont like it</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Why-I-like-it"><span class="toc-text">Why I like it</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-errors-get-checked"><span class="toc-text">Ensuring errors get checked</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Debugging-when-all-you-have-is-logs"><span class="toc-text">Debugging when all you have is logs</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-cleanup-behavior-occurs-on-error"><span class="toc-text">Ensuring cleanup behavior occurs on error</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Managing-early-exit-handlers-with-cleanup-without-goto"><span class="toc-text">Managing early exit handlers with cleanup without goto</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Solving-a-problem-you-don%E2%80%99t-actually-have"><span class="toc-text">Solving a problem you dont actually have</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#I-still-don%E2%80%99t-like-it"><span class="toc-text">I still dont like it</span></a>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Getting-roasted-in-IRC-is-motivational"><span class="toc-text">Getting roasted in IRC is motivational</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#There-is-no-problem-C-is-not-broken"><span class="toc-text">There is no problem. C is not broken.</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Because-we-can-do-better"><span class="toc-text">Because we can do better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Check-errno-stupid"><span class="toc-text">Check errno, stupid</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-libakerror-way"><span class="toc-text">The libakerror way</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#But-the-macros-hide-a-lot-of-complexity"><span class="toc-text">But the macros hide a lot of complexity</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#We-don%E2%80%99t-like-it"><span class="toc-text">We dont like it</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Why-I-like-it"><span class="toc-text">Why I like it</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-errors-get-checked"><span class="toc-text">Ensuring errors get checked</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Debugging-when-all-you-have-is-logs"><span class="toc-text">Debugging when all you have is logs</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-cleanup-behavior-occurs-on-error"><span class="toc-text">Ensuring cleanup behavior occurs on error</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Managing-early-exit-handlers-with-cleanup-without-goto"><span class="toc-text">Managing early exit handlers with cleanup without goto</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Solving-a-problem-you-don%E2%80%99t-actually-have"><span class="toc-text">Solving a problem you dont actually have</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-still-don%E2%80%99t-like-it"><span class="toc-text">I still dont like it</span></a></li></ol>
</div>
</main>
@@ -1223,7 +1223,7 @@ _writeToFile_cleanup<span class="token operator">:</span>
style="padding-right: 2px;">
</i>TOC
</div>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Getting-roasted-in-IRC-is-motivational"><span class="toc-text">Getting roasted in IRC is motivational</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#There-is-no-problem-C-is-not-broken"><span class="toc-text">There is no problem. C is not broken.</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Because-we-can-do-better"><span class="toc-text">Because we can do better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Check-errno-stupid"><span class="toc-text">Check errno, stupid</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-libakerror-way"><span class="toc-text">The libakerror way</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#But-the-macros-hide-a-lot-of-complexity"><span class="toc-text">But the macros hide a lot of complexity</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#We-don%E2%80%99t-like-it"><span class="toc-text">We dont like it</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Why-I-like-it"><span class="toc-text">Why I like it</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-errors-get-checked"><span class="toc-text">Ensuring errors get checked</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Debugging-when-all-you-have-is-logs"><span class="toc-text">Debugging when all you have is logs</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-cleanup-behavior-occurs-on-error"><span class="toc-text">Ensuring cleanup behavior occurs on error</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Managing-early-exit-handlers-with-cleanup-without-goto"><span class="toc-text">Managing early exit handlers with cleanup without goto</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Solving-a-problem-you-don%E2%80%99t-actually-have"><span class="toc-text">Solving a problem you dont actually have</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#I-still-don%E2%80%99t-like-it"><span class="toc-text">I still dont like it</span></a>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Getting-roasted-in-IRC-is-motivational"><span class="toc-text">Getting roasted in IRC is motivational</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#There-is-no-problem-C-is-not-broken"><span class="toc-text">There is no problem. C is not broken.</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Because-we-can-do-better"><span class="toc-text">Because we can do better</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Check-errno-stupid"><span class="toc-text">Check errno, stupid</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-libakerror-way"><span class="toc-text">The libakerror way</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#But-the-macros-hide-a-lot-of-complexity"><span class="toc-text">But the macros hide a lot of complexity</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#We-don%E2%80%99t-like-it"><span class="toc-text">We dont like it</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Why-I-like-it"><span class="toc-text">Why I like it</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-errors-get-checked"><span class="toc-text">Ensuring errors get checked</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Debugging-when-all-you-have-is-logs"><span class="toc-text">Debugging when all you have is logs</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Ensuring-cleanup-behavior-occurs-on-error"><span class="toc-text">Ensuring cleanup behavior occurs on error</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Managing-early-exit-handlers-with-cleanup-without-goto"><span class="toc-text">Managing early exit handlers with cleanup without goto</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Solving-a-problem-you-don%E2%80%99t-actually-have"><span class="toc-text">Solving a problem you dont actually have</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#I-still-don%E2%80%99t-like-it"><span class="toc-text">I still dont like it</span></a></li></ol>
</article>
@@ -1237,6 +1237,11 @@ _writeToFile_cleanup<span class="token operator">:</span>
</div>
<div class="recent-posts-list">
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-11</div>
<a href="/2026/01/11/News-2026-Week-1/"><div class="recent-posts-item-content">News - 2026 - Week 1</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-11</div>
<a href="/2026/01/11/Single-Pane-of-Glass/"><div class="recent-posts-item-content">Single Pane of Glass</div></a>
@@ -1252,11 +1257,6 @@ _writeToFile_cleanup<span class="token operator">:</span>
<a href="/2026/01/11/libakerror/"><div class="recent-posts-item-content">libakerror</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-11</div>
<a href="/2026/01/11/News-2026-Week-1/"><div class="recent-posts-item-content">News - 2026 - Week 1</div></a>
</div>
</div>
</div>
</article>