the fediverse not beating the “heavily biased toward having a technical userbase” allegations
long, code
/* ISC license. */
#include <stddef.h>
#include <stdint.h>
#include <limits.h>
#include <errno.h>
#include <skalibs/uint64.h>
#include <skalibs/bytestr.h>
#include <skalibs/stralloc.h>
#include <execline/execline.h>
int el_parse (stralloc *sa, el_chargen_func_ref next, void *source)
{
static unsigned char const class[256] = "`aaaaaaaaadaaaaaaaaaaaaaaaaaaaaaafcbffffffffffffjhhhhhhhiifffffffmmmmmmfffffffffffffffffffffeffffggmmmgfffffffkfffkfkfkflffnfoffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ;
static uint16_t const table[17][16] =
{
{ 0x0011, 0x0000, 0x0001, 0x2008, 0x0000, 0x0005, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2402, 0x2403 },
{ 0x0011, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 },
{ 0x0012, 0x1000, 0x0404, 0x0008, 0x1000, 0x0005, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404 },
{ 0x0911, 0x0900, 0x0404, 0x0008, 0x0900, 0x0005, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404 },
{ 0x0111, 0x0100, 0x0404, 0x0008, 0x0100, 0x0006, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404 },
{ 0x0011, 0x2404, 0x2404, 0x2404, 0x0000, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404, 0x2404 },
{ 0x0012, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404 },
{ 0x0012, 0x0408, 0x0408, 0x0408, 0x0008, 0x0408, 0x0408, 0x0208, 0x448c, 0x448c, 0x0089, 0x0208, 0x0408, 0x0408, 0x0408, 0x0408 },
{ 0x0012, 0x0408, 0x0408, 0x0004, 0x0408, 0x0007, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408 },
{ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x440a, 0x0012, 0x440a, 0x0012, 0x008e, 0x0012, 0x0012, 0x0012 },
{ 0x8111, 0x8408, 0x8408, 0x8004, 0x8408, 0x8007, 0x8408, 0x8408, 0x040b, 0x8408, 0x040b, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408 },
{ 0x8111, 0x8408, 0x8408, 0x8004, 0x8408, 0x8007, 0x8408, 0x8408, 0x0410, 0x8408, 0x0410, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408 },
{ 0x8111, 0x8408, 0x8408, 0x8004, 0x8408, 0x8007, 0x8408, 0x8408, 0x040d, 0x040d, 0x040d, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408 },
{ 0x8111, 0x8408, 0x8408, 0x8004, 0x8408, 0x8007, 0x8408, 0x8408, 0x0410, 0x0410, 0x0410, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408 },
{ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x440f, 0x440f, 0x440f, 0x440f, 0x0012, 0x0012, 0x440f, 0x0012, 0x0012 },
{ 0x8111, 0x8408, 0x8408, 0x8004, 0x8408, 0x8007, 0x8408, 0x0410, 0x0410, 0x0410, 0x0410, 0x8408, 0x8408, 0x0410, 0x8408, 0x8408 },
{ 0x8111, 0x8408, 0x8408, 0x8004, 0x8408, 0x8007, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408, 0x8408 }
} ;
size_t mark = 0 ;
unsigned int n = 0, blevel = 0 ;
uint8_t state = 0, base = 10 ;
while (state < 0x11)
{
uint16_t c ;
unsigned char cur ;
if (!(*next)(&cur, source)) return -1 ;
c = table[state][class[cur]-'`'] ;
state = c & 0x1F ;
if (c & 0x8000U)
{
uint64_t u ;
if (!stralloc_0(sa)) return -1 ;
sa->len = mark ;
uint64_scan_base(sa->s + sa->len, &u, base) ;
if (!u || u > 0xff) return -2 ;
sa->s[sa->len++] = (unsigned char)u ;
}
if (c & 0x4000U) mark = sa->len ;
if (c & 0x2000U)
{
unsigned int i = blevel ;
if (!stralloc_readyplus(sa, i<<2)) return -1 ;
while (i--) sa->s[sa->len++] = ' ' ;
}
if (c & 0x1000U) sa->len -= ++blevel ;
if (c & 0x0800U)
{
if (!blevel--) return -4 ;
sa->len -= 2 ;
}
if (c & 0x0400U) if (!stralloc_catb(sa, (char *)&cur, 1)) return -1 ;
if (c & 0x0200U)
{
char x = 7 + byte_chr("abtnvfr", 7, cur) ;
if (!stralloc_catb(sa, &x, 1)) return -1 ;
}
if (c & 0x0100U)
{
if (n++ >= INT_MAX) return (errno = E2BIG, -1) ;
if (!stralloc_0(sa)) return -1 ;
}
if (c & 0x0080U)
{
switch (cur)
{
case 'x' : base = 16 ; break ;
case '0' : base = 8 ; break ;
default : base = 10 ;
}
}
}
if (state > 0x11) return -2 ;
if (blevel) return -3 ;
return n ;
}
fuck off
execline (and skarnet’s) oftware in general) is usually pretty straightfurward (though the sheer amount of whack nonstandard NIH library functions involved are a pain in the ass to get your head around at furst) but i’ll never furgive him fur dropping a whole ass state machine transition table right in the source code fur the execline parser with zero comments. that shit’s just inscrutable
it’s pronounced “ashling”. canonically a black housecat or any of the grass cat pokémon, but currently experiencing daily TFs. Commewnist. she/it. i automatically change my pfp on the furst post of the day
GlitchCat syscatmin and meowstodev; @ me about techincal problems with the instance, or fur feature requests. i got a job due to some extent to my work on this instance
i have very strong opinions about the sonic furanchise. pokémon has me in a chokehold when it comes to merchandise
available via email with the same username and domain. DM/email for other purrotocols
workplace policy is to clarify that all of my opinions expressed here are my own, and not those of my employer
“all this shit is still incomprehensible but im glad u accomplished something” ―@wallhackio
“i feel mildly relieved that the obscure and esoteric code that i use to build the site will always be definitely outclassed by the obscure and esoteric code that you use to serve it” ―@Lady