Am 20.04.26 um 18:15 schrieb Steffen Nurpmeso:
Hello Alejandro.

Alejandro Colomar via Mutt-dev wrote in
  <aeP4WD47Pch3b5UT@devuan>:
  |On 2026-04-18T02:10:17+0200, Steffen Nurpmeso wrote:
  |[...]
  |> I never used the standard library until i took maintainership of
  |> that MUA, really.  (fprintf(3), but only as the last possibility
  |> in case of debug havoc.)  We had (or could) -nostdlib (on Linux;
  |> but needed -ldl), dtors, ctors, (ifuncs), this all not used
  |> (-fno-rtti and all that), so it was wonderful.
  |
  |Hmmm, then yes, that would count as C89.  It's quite rare, as these days
  |almost every program uses POSIX or C99 library stuff, such as
  |snprintf(3).

Libraries seem to have detoriated thus, in that, i think compiling
on a twenty year old system will currently really fail, also
because of snprintf for example.  (Originally there was a "lazy
wrapper" which simply called vsprintf().)
But it is on the list and not forgotten.

I would advise not to waste time and brain cycles for open source on getting network-related code -- or generally code that needs to support inputs you don't control -- to run on 20-year-old systems with insufficient library support that make you write 20 lines of situation and error checking for a job you get done with three in a modern variant of your programming language and one in another. We've seen mutt maintainers come and go over the years.

That standard format I/O, for example, i never liked, i will
port the "format codec", one day.  (Just a(n) (restartable)
object that does it, being fed from the front instead of
calling pointer-to-function from the back, as some I/O libraries
implemented the *f() series, at one time, at least.  With it,
non-restartable (eg stack buffer) is then simply

         Txt::FormatDecoder      fd;
         ...
         if(_cplen == M1::ui4)
                 _cplen = length(_cp);
         (void)fd.setup(_cp, _cplen, _fmt, _valistp)
                 .setRestartable(fal0)
                 .call();
         _cplen = ((fd.isFinished() || 0 != fd.numberOfConversions())
                         ? fd.numberOfAssignments()
                         : M1::ui4);
         return _cplen;

which is so much better than anything else thinkable.)

Wasting time on solved problems seems to be a hobby project in itself, but not useful if you don't have it now but want your application (such as mutt) written and progress.

Reply via email to