title: GNU strerror_r buffer meaning
body: <pre><code>char *strerror_r(int errnum, char *buf, size_t buflen);
  </code></pre>
  
  <p>What are these <code>buf</code>/<code>buflen</code> parameters for?</p>
  
  <h3>Empty buffer works like a charm:</h3>
  
  <pre><code>char* buf = nullptr;
  fprintf(stderr, strerror_r(errno, buf, 0));
  </code></pre>
  
  <h3>Also this buffer looks like unused:</h3>
  
  <pre><code>char buf[1024];
  fprintf(stderr, "%s\n", strerror_r(errno, buf, sizeof buf)); // Correct message here
  fprintf(stderr, "%s\n", buf); // Empty
  </code></pre>