[2022-08-22T00:00:46Z] idk man [2022-08-22T00:01:25Z] sounds like bloat to me(joking) [2022-08-22T00:02:59Z] > monadic predicate logic [2022-08-22T00:03:09Z] mfw liebniz was right the whole time [2022-08-22T00:03:57Z] actually wouldn't monadic predicate logic be equivalent to first order logic? [2022-08-22T00:04:17Z] not if i'm interpreting the BNF grammar of first order logic [2022-08-22T00:04:31Z] it seems to allow a single proposition to have multiple predicates [2022-08-22T00:04:39Z] FOL has quantifiers I'm not certain if MPL does [2022-08-22T00:04:47Z] I've always skipped over the distinction tho [2022-08-22T00:04:49Z] MPL does [2022-08-22T00:05:18Z] then they're functionally equivalent without me knowing anything more about it [2022-08-22T00:05:20Z] but multiple predicates = 1 tuple of predicates [2022-08-22T00:05:33Z] mfw mpl doesn't have explosion [2022-08-22T01:01:27Z] Hi [2022-08-22T01:07:13Z] so, question for anyone with experience programming using toolkits like Motif or Athena: [2022-08-22T01:08:07Z] i might just be working off a small sample size, but i've seen a lot of programs that declare and set a variable to hold a string, use it once, and then free it. why would you do that instead of passing the result of the string initialization function directly to whatever function uses the variable? [2022-08-22T01:09:09Z] it seems kind of redundant to use a variable for a value that's used once [2022-08-22T01:29:20Z] show an example [2022-08-22T01:30:51Z] http://0x0.st/o9aB.c [2022-08-22T01:31:14Z] this snippet is what I'm talking about [2022-08-22T01:31:31Z] (this is from the IRC client I've spent today hacking on) [2022-08-22T01:31:48Z] i've seen similar things in other Motif programs I've peeked at the source for, too [2022-08-22T01:32:21Z] passing the function's return value doesn't make it less readable or reduce semantic value either [2022-08-22T01:32:39Z] "the function" being XM_STRING_CREATE (which I suppose is a macro...) [2022-08-22T01:33:21Z] but similar things occur with... gah, what's the function to create a motif string... one sec [2022-08-22T01:33:50Z] XmStringCreate(), go figure [2022-08-22T01:39:17Z] man, the macro doesn't even do anything useful in this case [2022-08-22T01:39:38Z] #define XM_STRING_CREATE(str) XmStringCreateLocalized(str) [2022-08-22T01:51:08Z] who knows [2022-08-22T01:51:27Z] perhaps they intended to error check in case XmStringCreateLocalized failed but never did [2022-08-22T01:52:45Z] * midfavila shrugs [2022-08-22T01:54:19Z] also in my experience people tend to avoid passing function outputs directly as parameters into other functions in c, except in trivial cases [2022-08-22T01:56:27Z] i guess because most of the time, functions can fail [2022-08-22T01:57:20Z] actually, [2022-08-22T01:57:26Z] i just took a quick peek at the manpage [2022-08-22T01:57:37Z] the function opaquely allocates memory [2022-08-22T01:57:43Z] that answers that question [2022-08-22T03:19:19Z] okay, wew [2022-08-22T03:19:34Z] somewhere, somehow the IRC client's state struct stopped being initialized [2022-08-22T03:20:05Z] libera didn't like me trying to connect sans nickname [2022-08-22T03:48:33Z] huh... it's interesting to see how even the full IRC RFC is mostly server-side stuff [2022-08-22T03:48:57Z] someone by the name of Jack Allnut appears to have taken the time to go through and write a spec specifically for clients, it's surprisingly short [2022-08-22T03:49:59Z] is there a way to set mdev rules without modifying mdev.conf directly? [2022-08-22T03:51:16Z] no way [2022-08-22T03:51:41Z] no possible way ever? damn taht sucks [2022-08-22T03:52:25Z] why [2022-08-22T03:53:15Z] i just want to have 1 or 2 simple mdev rules but modifying mdev.conf directly could make KISS overwrite it on mdev update [2022-08-22T03:53:37Z] i'm pretty sure there are guards against that [2022-08-22T03:53:51Z] doesn't kiss compare the checksum of a file during an update to what it was during the original install? [2022-08-22T03:54:00Z] hm [2022-08-22T03:54:02Z] or am I mistaken? [2022-08-22T03:54:49Z] kiss doesn't overwrite files in /etc/ [2022-08-22T03:54:58Z] alright cool [2022-08-22T03:55:16Z] if those were modified [2022-08-22T03:56:05Z] illiliti: is this correct?: PRODUCT=1038/12b3/0;.* [2022-08-22T03:57:11Z] maybe [2022-08-22T03:57:18Z] one way to find out [2022-08-22T04:05:25Z] how do i view mdev logs again [2022-08-22T04:06:53Z] uevent? [2022-08-22T04:07:30Z] thx [2022-08-22T04:15:55Z] im not sure how the hell do i give myself 777 access to hidraw [2022-08-22T04:16:05Z] i just want 1 specific device lol [2022-08-22T04:27:03Z] what do you guys think of zig? [2022-08-22T04:40:00Z] i dont program but i see zig as meh [2022-08-22T04:40:14Z] looks like what rust is trying to achieve, ' a modern C' [2022-08-22T04:49:46Z] zig is OK if you don't care about llvm and cmake dependency [2022-08-22T04:51:25Z] it's more like a personal issue, but i don't like how zig tries to NIH and absorb everything [2022-08-22T04:51:46Z] build system, cross-compilation, linker, compiler, ... [2022-08-22T04:52:30Z] zig is more than just a language [2022-08-22T04:53:06Z] but as a language it's OK [2022-08-22T05:03:05Z] if there were minizig without llvm/cmake dep, which would just implement zig compiler without all the bells and whistles, i would use it for everything [2022-08-22T05:04:36Z] what about nim? [2022-08-22T05:05:41Z] nim's stdlib depends on GC [2022-08-22T05:05:57Z] it's no go for general purpose programming [2022-08-22T05:06:36Z] and system programming too [2022-08-22T05:11:15Z] but again, it's my personal view. of course every language have its use case [2022-08-22T06:45:03Z] midfavila: motif and athena's string handling is so awful [2022-08-22T06:46:23Z] at least motif has a few more routines to do stuff with them [2022-08-22T07:35:54Z] @illiliti self hosted compiler without lolvm is on the roadmap [2022-08-22T07:36:09Z] years to go tho [2022-08-22T07:38:55Z] how are u supposed to manage multiple networks with wpa spplicent [2022-08-22T07:45:34Z] wpa_cli enable/disable_network? [2022-08-22T08:21:26Z] oh [2022-08-22T08:21:47Z] ioraff: I thought the patches in gentoo repo were for old versions because of the naming they used lol [2022-08-22T08:27:08Z] @phoebos can u set interface and driver in wpa_supplicant.conf [2022-08-22T08:36:53Z] testuser[m]12: even if zig get rid of llvm at some point, it still won't fit my criteria [2022-08-22T08:40:11Z] what lang do u prefer other than C then [2022-08-22T08:43:11Z] also does the -M flag on wpa_supplicant cause an infinite loop for anyone else [2022-08-22T08:43:40Z] hare i think. its stdlib is lacking many things, but it isn't over-engineered unlike zig [2022-08-22T08:44:08Z] but generics [2022-08-22T08:44:51Z] i don't see the need for them [2022-08-22T08:44:57Z] i'm fine without [2022-08-22T08:53:35Z] would u duplicate hash map code in every project [2022-08-22T08:53:43Z] is there a preprocessing solution or something [2022-08-22T08:59:38Z] i see what you mean. re hashmap, i'm thinking about implementing some variants of hash maps and putting them into BSD0. this way you can simply adopt them into your project without reinventing everything each time. [2022-08-22T08:59:50Z] and there's no preprocessing. hare's best is -Dvar:type=value [2022-08-22T09:06:27Z] there's build tags though. forgot about them [2022-08-22T09:06:58Z] you can use them to implement things like #ifdef _linux_ [2022-08-22T09:20:51Z] testuser[m]12: you have to do each driver/interface separately [2022-08-22T09:20:55Z] > wpa_supplicant can control multiple interfaces (radios) either by running one process for each interface separately or by running just one process and list of options at command line. Each interface is separated with -N argument. [2022-08-22T09:21:43Z] see the example in the manpage [2022-08-22T09:22:14Z] you'd need two configs [2022-08-22T10:10:29Z] ok [2022-08-22T10:11:00Z] how does it work if you have interface names like wl0ps0s20 that keep changing [2022-08-22T10:18:21Z] can you stop them from changing [2022-08-22T10:18:32Z] but I don't know [2022-08-22T10:23:49Z] illiliti: hare is fuckingly cool [2022-08-22T10:39:09Z] yeah, they did many things right [2022-08-22T10:39:18Z] btw [2022-08-22T10:39:26Z] https://codeberg.org/illiliti/hare-dnscrypt [2022-08-22T10:39:48Z] i can do kiss r go, finally [2022-08-22T10:40:41Z] good fucking riddance, go! i hate you google [2022-08-22T10:56:10Z] I hate google too lol [2022-08-22T10:56:36Z] Starred your repo <3 [2022-08-22T10:59:58Z] thx [2022-08-22T11:03:26Z] 770.5K dnscrypt-client [2022-08-22T11:03:30Z] 8.4M dnscrypt-proxy [2022-08-22T11:03:50Z] insane difference [2022-08-22T11:04:13Z] go and dnscrypt-proxy have become too annoying to deal with, really [2022-08-22T11:04:53Z] both are growing in size on each release [2022-08-22T11:23:15Z] so no more go on your system from now on then? you just about had it with go havent you? :p [2022-08-22T11:25:39Z] yep [2022-08-22T11:27:21Z] I still use go for 1 packge, but it would be nice to avoid it all together. damn github-cli is written in go, and its annoying.. [2022-08-22T11:27:42Z] I had 2, but got rid of fzf, for fzy, which was written in C instead :D [2022-08-22T11:30:41Z] o fzy is nice. i have bindings for it, but i don't use them too often [2022-08-22T11:31:47Z] it is. im however really just using it with ytfzf though. I rearly use it otherwise [2022-08-22T11:31:50Z] * sad_plan shrugs [2022-08-22T11:33:48Z] isn't github-cli written in ruby? [2022-08-22T11:36:16Z] oh wait, the old version was written in ruby [2022-08-22T11:38:28Z] i'm pretty sure it sucks though, so you no choice but to rewrite it in more sane language if you want to get rid of go [2022-08-22T11:40:06Z] what is a sane language? [2022-08-22T11:40:43Z] yeah, I dont know any sane languages atm, so ill either stick with it, or just choose to not use it. its rather convinient though. [2022-08-22T11:40:47Z] C is a sane language [2022-08-22T11:40:57Z] c, hare, zig [2022-08-22T11:41:08Z] everyone outside this place always say C is unsafe and blah blahh [2022-08-22T11:44:11Z] it can be unsafe, if you write unsafe code. it really breaks dowm to 'muh memory safety' when comparing rust to C in any case. [2022-08-22T11:44:28Z] its a meme at this point [2022-08-22T11:44:46Z] also, what is hare? i have never ever heard of it [2022-08-22T11:45:04Z] its a new language [2022-08-22T11:45:14Z] it is unsafe yeah, but despite its unsafety, it is simple, portable and doesn't totally suck unlike those "modern" languages [2022-08-22T11:46:18Z] i do tons of POSIX scripting and i wanna learn C at one point [2022-08-22T11:53:16Z] you could also look into rc. its the shell from plan9. really simple, and small [2022-08-22T11:54:59Z] but less portable [2022-08-22T11:55:52Z] yeah, unfortunatly [2022-08-22T11:59:47Z] meh, if you target rc, you target rc [2022-08-22T11:59:50Z] i daily it myself [2022-08-22T11:59:51Z] v v comfy [2022-08-22T12:00:16Z] only problem with it in interactive use is that linking it against the usual line editing libraries is pretty clunky, owing to them expecting bourne syntax [2022-08-22T12:02:23Z] I cant vouch for that at all, as Ive bearly used it. I tried to rewrite some scrits in it, but I belive I got stuck on some if statement or loops or w/e.. [2022-08-22T12:06:44Z] rc handles conditionals a little oddly [2022-08-22T12:06:58Z] the else statement needs to directly follow the initial conditional's closing brace [2022-08-22T12:07:07Z] as someone who's used to putting it on its own line that peeves me [2022-08-22T12:07:29Z] loops are definitely different, much more C-like than bourne [2022-08-22T12:07:58Z] while(statement){thing} or for(variable in range){thing} [2022-08-22T12:08:22Z] fortunately the entire BNF grammar fits on like [2022-08-22T12:08:23Z] one page [2022-08-22T12:08:29Z] so it's not hard to figure out the language itself [2022-08-22T12:09:18Z] ...well, assuming you know yacc, anyway [2022-08-22T12:09:23Z] i still need to learn that, gah [2022-08-22T12:11:02Z] yacc? why do you need to learn it? [2022-08-22T12:11:17Z] i need to use it for at least one project of mine [2022-08-22T12:11:37Z] secret project? [2022-08-22T12:11:39Z] a while ago i committed to restoring a lisp-based windowing system from the 80s written in KnR C and its own lisp, WOOL [2022-08-22T12:11:44Z] oh, it's not secret, it's just on hold [2022-08-22T12:11:47Z] because I'm shit at programming [2022-08-22T12:11:48Z] lmao [2022-08-22T12:12:11Z] turns out, going from "yeah I know what a pointer is" to "time to make a custom interpreter and windowing system" is a bit of a leap [2022-08-22T12:12:21Z] bruh [2022-08-22T12:12:34Z] * midfavila shrugs [2022-08-22T12:12:58Z] anyway if you wanted to look at the source, https://git.sdf.org/midfavila/Generic_Window_Manager [2022-08-22T12:13:22Z] last time I touched it was last year >.< [2022-08-22T12:13:32Z] but it uses yacc and lex to create a parser and stuff [2022-08-22T12:13:54Z] at some point i'll probably just write a new wm and WOOL interpreter [2022-08-22T12:14:03Z] because this code is a massive mess [2022-08-22T12:14:17Z] i see [2022-08-22T12:15:22Z] > Removed spyware routines [2022-08-22T12:15:24Z] lol [2022-08-22T12:16:03Z] it's not a joke [2022-08-22T12:16:19Z] there were subroutines that called a server to report telemetry data on boot [2022-08-22T12:16:30Z] i mean, the original creators didn't hide them, at least [2022-08-22T12:16:50Z] but I figured removing them would be a good idea, regardless of whether the server was still online or not [2022-08-22T12:19:59Z] anyway, I gotta change the font for my IRC client real quick, brb [2022-08-22T12:20:20Z] and we're back [2022-08-22T12:20:38Z] o/ [2022-08-22T12:20:46Z] figured a monospace font might be a little nicer for the main output window than a variable-pitch one [2022-08-22T12:20:51Z] definitely is [2022-08-22T12:26:50Z] have you heard about coherent os? it's an ancient unix-like os. i tried to port its coreutils, but gave up quickly. it's quite unpleasant to work with ansi c [2022-08-22T12:27:07Z] yeah i like resurrecting ancient stuff [2022-08-22T12:27:09Z] >mfw I haven't done anything other than ansi c [2022-08-22T12:27:24Z] also yes [2022-08-22T12:27:30Z] i'm familiar with coherent unix [2022-08-22T12:27:55Z] iirc it was a very early clone [2022-08-22T12:28:31Z] didn't the bell labs guys say that there was a non-zero chance they plagiarized system five or whatever? [2022-08-22T12:29:32Z] they didn't find anything to prove that and drove off [2022-08-22T12:31:17Z] aaah [2022-08-22T12:31:24Z] i dunno if i'd bother with its userland to be honest [2022-08-22T12:31:37Z] i think i'd much rather write my own versions of system software [2022-08-22T12:31:45Z] i wrote my own posix cat recently :D [2022-08-22T12:31:49Z] and it even works [2022-08-22T12:33:27Z] i don't really like how clunky parsing arguments in C is though, so until I better understand data structures and can implement a better method, most utilities are on hold [2022-08-22T12:33:43Z] POSIX CAT? HOW? [2022-08-22T12:33:53Z] .../s? [2022-08-22T12:34:08Z] aw god fucking damn it [2022-08-22T12:34:46Z] if you're *not* screwing with me, the answer is that I sat down with the posix manpage for cat open and only wrote in C89 using posix libraries [2022-08-22T12:35:20Z] it's... pretty bad, but it's my first non-trivial (?) program, so I'm at least slightly proud of it [2022-08-22T12:38:41Z] congrats [2022-08-22T12:38:46Z] next step is awk [2022-08-22T12:38:49Z] go [2022-08-22T12:38:59Z] * midfavila grasps their head [2022-08-22T12:39:01Z] * midfavila screams [2022-08-22T12:39:08Z] aaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A A A A A A A A A A A A A A A A [2022-08-22T12:39:10Z] xd [2022-08-22T12:39:22Z] that's another reason I need yacc [2022-08-22T12:39:27Z] *fuck* writing parsers and shit by hand [2022-08-22T12:39:30Z] that's way beyond me right now [2022-08-22T12:39:45Z] i'm gonna stick to like [2022-08-22T12:39:50Z] echo and ls and cp and stuff [2022-08-22T12:39:57Z] at least for now [2022-08-22T12:41:43Z] how about shadow utils? those are non-posix though [2022-08-22T12:42:02Z] non-posix utilities are next, after posix utilities [2022-08-22T12:42:31Z] i want to slowly rewrite my unix userland to be completely custom, so... [2022-08-22T12:42:53Z] the scope is at the very least POSIX+SUS+some extensions from late research unix/plan 9 [2022-08-22T12:43:05Z] and that includes a compiler and shit, ugh xwx [2022-08-22T12:43:19Z] i need a copy of the dragon book.... [2022-08-22T12:47:04Z] nice [2022-08-22T12:47:16Z] yeah, i guess [2022-08-22T12:47:23Z] it'd be nice to copy what the ACK does [2022-08-22T12:47:29Z] or, I guess, GCC too [2022-08-22T12:48:01Z] have an intermediate language that's emitted by frontends, pass that through an optimizer, and then compile that intermediate language to assembler and then machine code [2022-08-22T12:48:36Z] probably just start with an implemention of mini-C, scheme and pascal, gradually add more frontends over time [2022-08-22T12:50:39Z] which frontends? [2022-08-22T12:51:18Z] C proper, Common Lisp, Basic, nothing crazy [2022-08-22T12:51:35Z] ah [2022-08-22T12:51:38Z] the idea is to have a simple, portable, non-optimizing compiler that's easy-ish to understand [2022-08-22T12:51:59Z] optimizations are always gonna be optional if i can help it [2022-08-22T12:52:24Z] lisp can compile to machine code? [2022-08-22T12:52:55Z] in this case it wouldn't be a direct compilation, but i fail to see why it wouldn't be able to [2022-08-22T12:53:49Z] the source code will be transpiled to a logically equivalent intermediate language before any (optional) optimization and compilation is done, so... [2022-08-22T12:53:50Z] * midfavila shrugs? [2022-08-22T12:54:00Z] ultimately i'm just talking about like-to-dos and nice-to-haves [2022-08-22T12:54:38Z] do you plan to stick to the posix at all cost? how about replacing some components with more sane versions, e.g dd -> rw [2022-08-22T12:55:12Z] SUS where possible, POSIX where SUS can't be, and where neither POSIX nor SUS can be referred to, Plan 9 [2022-08-22T12:55:21Z] as a last resort I intend to refer to late-generation research unix [2022-08-22T12:55:50Z] if there are more sane counterparts of unix commands to be found in later versions of research unix and/or plan 9 then i'll likely implement those as well [2022-08-22T12:56:02Z] but in a separate package [2022-08-22T12:56:07Z] rw is a sortix thing, so... [2022-08-22T12:56:43Z] ...oh! [2022-08-22T12:56:46Z] I use his zlib [2022-08-22T12:56:53Z] sortix is cool [2022-08-22T12:57:18Z] but yeah, if I stea^H^H^H^Huse any of his ideas, they'll be in a separate package [2022-08-22T12:57:53Z] idea is mp-utils for portable tools that are standard, mu-utils for standard but unportable, and me-utils for extensions [2022-08-22T12:59:10Z] although for sufficiently large and complex programs like a compiler, or some of the more complex interpreters of Unix, I'll put them in their own repos with symlinks in the appropriate repo [2022-08-22T13:01:15Z] today, wc. tomorrow, mcc. the day after, the world [2022-08-22T13:28:13Z] is there a way to quickly get a version of a package without having to view its package sources [2022-08-22T13:29:10Z] nope [2022-08-22T13:29:28Z] aghhhh there is no way thats not possible [2022-08-22T13:29:28Z] a few people myself included have said that kiss version $PACKAGE should do the trick, but that just displays the version of kiss [2022-08-22T13:29:35Z] oh, it's totally possible [2022-08-22T13:29:36Z] trivial even [2022-08-22T13:29:43Z] it's just not a change upstream is willing to make [2022-08-22T13:29:45Z] yes i always thought of that [2022-08-22T13:29:46Z] just make a shell alias [2022-08-22T13:29:48Z] wait [2022-08-22T13:29:53Z] or a kisslet [2022-08-22T13:29:58Z] a "peck"? [2022-08-22T13:30:07Z] that would be pretty amusing - if kiss extensions were called pecks [2022-08-22T13:30:09Z] kiss-ver() { cat $(kiss s $1)/version } ? [2022-08-22T13:30:27Z] wael[m]: no [2022-08-22T13:30:32Z] how den [2022-08-22T13:30:50Z] you should probably use a head -1 [2022-08-22T13:30:58Z] yea [2022-08-22T13:31:04Z] or a sed 1q, [2022-08-22T13:31:07Z] or some shit with awk, [2022-08-22T13:31:12Z] or something to take only the first line [2022-08-22T13:31:17Z] tru [2022-08-22T13:31:37Z] read -r line < file [2022-08-22T13:31:37Z] i guess i can just do kiss-pv [2022-08-22T13:32:01Z] read -r pkgdir <<-EOF $(kiss s $1) EOF [2022-08-22T13:32:02Z] convenient [2022-08-22T13:32:17Z] yep [2022-08-22T13:34:38Z] kiss l pkg? [2022-08-22T13:34:49Z] YES [2022-08-22T13:34:50Z] that works [2022-08-22T13:35:09Z] ok i didnt have to make read -r kiss pv cat head1 benchmark this works [2022-08-22T13:35:33Z] but it works only with installed packages [2022-08-22T13:35:43Z] but thats what i want [2022-08-22T13:35:47Z] but good point [2022-08-22T13:36:51Z] illiliti: 'POSIX' kiss-pv without head or cat is 1.10 ± 0.04 times faster than cat head, amazing [2022-08-22T13:49:55Z] tf is kiss pv [2022-08-22T14:54:55Z] mutt [2022-08-22T14:54:59Z] oops [2022-08-22T15:05:46Z] @testuser: basically look up version of package without needing it installed [2022-08-22T15:06:02Z] i just compared the normal way vs posix way [2022-08-22T15:50:41Z] you guys are telling me toybox is half the size of busybox (in SLOC and size too) and has the features i want unlike busybox? this is a steal! [2022-08-22T15:51:13Z] unfortunately i use glibc 2.36 and i dont think landley likes it because my pr to fix the building on glibc is unnoticed [2022-08-22T16:01:34Z] it's been 2 days [2022-08-22T16:03:30Z] i have little patience nowadays sorry [2022-08-22T16:03:42Z] but he has committed and commented on other things in the same repository after the time period of the pr [2022-08-22T16:03:51Z] sooooooooooooooooo [2022-08-22T17:44:05Z] * midfavila shrugs [2022-08-22T17:55:20Z] * midfavila shrugs [2022-08-22T19:26:01Z] * midfavila shrugs [2022-08-22T19:27:34Z] ¯\_(ツ)_/¯ [2022-08-22T19:29:00Z] ¯¯¯¯_(0.0)_/¯¯¯¯ [2022-08-22T19:31:10Z] * midfavila shrugs [2022-08-22T19:31:26Z] ¯\_(ツ)_/¯ [2022-08-22T19:45:57Z] * midfavila shrugs [2022-08-22T19:52:30Z] are you running a shrug script? [2022-08-22T20:07:06Z] * midfavila shrugs [2022-08-22T20:37:57Z] * midfavila shrugs [2022-08-22T20:43:55Z] * midfavila shrugs [2022-08-22T21:25:59Z] midfavila: interesting thought, I pretend that the choice of "ax" is generic as an example. [2022-08-22T22:51:02Z] i just realized that when writing my implementation of cat i could have represented the "internal buffer" as the result of something similar to a recursive function call [2022-08-22T22:51:05Z] at least in principle [2022-08-22T22:51:31Z] "while input isn't exhausted, concatenate the result of reading the next file onto the result of concatenating the result of reading the next file onto..." [2022-08-22T22:52:05Z] instead of taking the path i actually took which does a bunch of pointer bullshit to implement functions that continuously expand an array [2022-08-22T22:52:24Z] . _. [2022-08-22T23:12:33Z] you shouldn't do that either, you should just open a file, dump to stdout, close it, repeat [2022-08-22T23:14:39Z] posix requires that the default behavior be buffered output [2022-08-22T23:14:51Z] -u needs to be supplied if unbuffered output is desired [2022-08-22T23:15:05Z] FILE has builtin buffering i believe [2022-08-22T23:15:38Z] sauce? [2022-08-22T23:15:50Z] i'd like to know if i wasted my time so i don't do it again in the future [2022-08-22T23:16:34Z] i'd look at another implementation of cat but i'm trying to avoid contaminating my code [2022-08-22T23:17:26Z] -u just forces unbuffering [2022-08-22T23:17:42Z] it can be unbuffered by default, it's just not required to [2022-08-22T23:17:57Z] and i think i'm wrong actually that FILE is buffered by default [2022-08-22T23:18:10Z] i don't think files are buffered by default [2022-08-22T23:18:16Z] they're just a stream of bytes terminated by eof [2022-08-22T23:18:33Z] i'm talking about the libc FILE abstraction [2022-08-22T23:18:34Z] and i mean, fair enough on the not being required bit [2022-08-22T23:18:40Z] yes, I figured [2022-08-22T23:19:08Z] anyway, required or not, it's an option and i wanted to implement it [2022-08-22T23:19:21Z] i needed the practice with pointers [2022-08-22T23:21:54Z] fair enough, but remember that it uses more memory than necessary [2022-08-22T23:22:04Z] of course